2009-12-02 6 views
0

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

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

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

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

ответ

5

Вы можете использовать дату модифицированную.

$last_modified = filemtime("thisfile.php"); 
+0

Возможно, это лучший метод, если возможно, что размер вашего файла может оставаться неизменным при изменении данных. –

0

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

Браузеры уже могут быть помечены заголовками «if-modified-since» для запросов.