Php 长轮询-确定何时有新数据的方法有哪些?

Php 长轮询-确定何时有新数据的方法有哪些?,php,perl,long-polling,xmlhttprequest,Php,Perl,Long Polling,Xmlhttprequest,假设我有一个聊天程序,每当有人发送消息时,一个全局文件就会被锁定并写入其中。接收客户端有一个挂起的xmlhttp请求,该请求正等待使用以下构造返回新更新的文件: while (!hasNewdata()) { sleep 3; } print "$thenewdata"; sub hasNewData() { # determine if global file has been appended to. } 将文件大小发送到客户端,然后在下一个轮询请求中返回到服务器,这

假设我有一个聊天程序,每当有人发送消息时,一个全局文件就会被锁定并写入其中。接收客户端有一个挂起的xmlhttp请求,该请求正等待使用以下构造返回新更新的文件:

while (!hasNewdata())
{    sleep 3;    }
print "$thenewdata";
sub hasNewData()
{
     # determine if global file has been appended to.
}
将文件大小发送到客户端,然后在下一个轮询请求中返回到服务器,这是一种很好的方法,因为我们现在可以检查文件大小是否与已发送回客户端的文件大小不同,以便知道有新数据。或者来回发送文件偏移量是一种更好的方法,以便它知道在文件中的何处检查新数据?或者完全不同的方法,而不是使用全局“聊天”文件


确定“可用新数据”的一般方法是什么?

您可以使用修改的日期

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

您可以使用修改的日期

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

文件大小不是一个很糟糕的方法


浏览器可能已经在为请求的标题添加“if modified since”标签了。

文件大小不是一个很糟糕的方式


浏览器可能已经在为请求的标题添加“if modified since”标记了。

如果您的文件大小可能在数据更改时保持不变,这可能是更好的方法。如果您的文件大小可能在数据更改时保持不变,这可能是更好的方法。