@DEnisLEB

Не работает long polling, как исправить?

Не работает обработчик long pollinga вероятнее всего скрипт не получает обновленные данные из базы, не понимаю как это исправить.
set_time_limit(0);

while (true) {//*
    $last_ajax_call = isset($_GET['timestamp']) ? (int)$_GET['timestamp'] : null;

    clearstatcache();
      $data_source_file = R::findLast('messages', 'dialog = ? ',array($_GET['getmess']));
    $last_change_in_data_file = $data_source_file->date;
    if ($last_ajax_call == null || $last_change_in_data_file > $last_ajax_call) {
        $data = $data_source_file->message;
        $result = array(
            'data_from_file' => $data,
            'timestamp' => $last_change_in_data_file
        );
        $json = json_encode($result);
        echo $json;
        break;

    } else {
        sleep(1);
      
      
    }
}

aякс
<script type="text/javascript">
	function getContent(timestamp)
	{

	    var queryString = {'timestamp' : timestamp, 'getmess' : "<? echo $_GET["set"]; ?>"};
	    $.ajax({
	            type: 'GET',
	            url: 'pages/blocks/message/msd.php',
	            data: queryString,
	            success: function(data){
	                var obj = JSON.parse(data);
	                $('.logick').html(obj.data_from_file);
									alert(obj.data_from_file);
	                getContent(obj.timestamp);
	            }
	        }
	    );
	}
	$(function() {
	    getContent();
	});
  </script>
  • Вопрос задан
  • 270 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Вариантов всего 2. Либо веб-сервер закрывает коннект после N секунд отсутствия передачи данных. Либо браузер.
В первом случае поможет проверить это запись в лог-файл. Во втором - F12.

Как исправить - не извращаться, а использовать web socket.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы