За последние 24 часа нас посетили 16172 программиста и 1667 роботов. Сейчас ищут 934 программиста ...

Исправить long polling

Тема в разделе "PHP для новичков", создана пользователем Денис404, 16 авг 2018.

Метки:
  1. Денис404

    Денис404 Новичок

    С нами с:
    16 июн 2018
    Сообщения:
    15
    Симпатии:
    0
    Не работает обработчик long pollinga вероятнее всего скрипт не получает обновленные данные из базы, не понимаю как это исправить.
    PHP:
    1.  
    2. while (true) {//*
    3.     $last_ajax_call = isset($_GET['timestamp']) ? (int)$_GET['timestamp'] : null;
    4.  
    5.       $data_source_file = R::findLast('messages', 'dialog = ? ',array($_GET['getmess']));
    6.     $last_change_in_data_file = $data_source_file->date;
    7.     if ($last_ajax_call == null || $last_change_in_data_file > $last_ajax_call) {
    8.         $data = $data_source_file->message;
    9.         $result = array(
    10.             'data_from_file' => $data,
    11.             'timestamp' => $last_change_in_data_file
    12.         );
    13.         $json = json_encode($result);
    14.         echo $json;
    15.         break;
    16.  
    17.     } else {
    18.         sleep(1);
    19.    
    20.    
    21.     }
    22. }
    аякс
    Код (Javascript):
    1. <script type="text/javascript">
    2.   function getContent(timestamp)
    3.   {
    4.  
    5.       var queryString = {'timestamp' : timestamp, 'getmess' : "<? echo $_GET["set"]; ?>"};
    6.       $.ajax({
    7.               type: 'GET',
    8.               url: 'pages/blocks/message/msd.php',
    9.               data: queryString,
    10.               success: function(data){
    11.                   var obj = JSON.parse(data);
    12.                   $('.logick').html(obj.data_from_file);
    13.                   alert(obj.data_from_file);
    14.                   getContent(obj.timestamp);
    15.               }
    16.           }
    17.       );
    18.   }
    19.   $(function() {
    20.       getContent();
    21.   });
    22.   </script>
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Как отлаживаешь?

    Кстати, $last_ajax_call=isset($_GET['timestamp']) ? (int)$_GET['timestamp']:null; внутри цикла не нужен потому что не будет меняться. Логично?
     
  3. Денис404

    Денис404 Новичок

    С нами с:
    16 июн 2018
    Сообщения:
    15
    Симпатии:
    0
    я точно знаю что аякс рабочий, на примере с файлом эта шняга работала, но с базой нет
    --- Добавлено ---
    https://github.com/panique/php-long-polling вот к этому надо базу прифигачить, вроде всё просто... но не пашет