длительный опрос - каковы методы определения наличия новых данных? - PullRequest
0 голосов
/ 02 декабря 2009

Допустим, у меня есть программа чата, в которую каждый раз, когда кто-то отправляет сообщение, глобальный файл блокируется и записывается. Получающий клиент имеет ожидающий запрос xmlhttp, который ожидает возврата с недавно обновленным файлом, используя эту конструкцию:

while (!hasNewdata())
{    sleep 3;    }
print "$thenewdata";
sub hasNewData()
{
     # determine if global file has been appended to.
}

Будет ли отправка размера файла клиенту, а затем обратно на сервер в следующем запросе на опрос, хорошим способом сделать это, поскольку теперь мы можем проверить, отличается ли размер файла от того, который уже был отправлен обратно клиент, поэтому мы знаем, что есть новые данные. Или отправка смещения файла туда и обратно будет лучшим подходом, чтобы он знал, где в файле проверять наличие новых данных? Или совершенно другой метод, отличный от использования глобального файла чата?

Каковы общие методы определения «доступны новые данные»

Ответы [ 2 ]

5 голосов
/ 02 декабря 2009

Вы можете использовать дату изменения.

$last_modified = filemtime("thisfile.php");
0 голосов
/ 02 декабря 2009

Размер файла не такой уж плохой способ.

Браузеры уже могут помечать заголовки "if-Modified-Since" в запросах.

...