长轮询 - 确定何时有新数据的方法是什么?

use*_*033 0 php perl xmlhttprequest long-polling

假设我有一个聊天程序,每次有人发送消息时,都会锁定并写入全局文件.接收客户端有一个挂起的xmlhttp请求,它等待使用此结构返回新更新的文件:

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

将文件大小发送到客户端然后在下一个轮询请求中返回服务器是一个很好的方法,因为我们现在可以检查文件大小是否与已发送回客户端的文件大小不同,所以我们知道有新数据.或者来回发送文件偏移是一种更好的方法,因此它知道在文件中检查新数据的位置?或者完全不同的方法,除了使用全局"聊天"文件之外的其他方法?

什么是确定'新数据可用'的一般方法

Gaz*_*ler 5

您可以使用修改日期.

$last_modified = filemtime("thisfile.php");
Run Code Online (Sandbox Code Playgroud)