【发布时间】:2011-11-08 06:13:29
【问题描述】:
我正在构建一个具有聊天功能的网站,我需要跟踪在线和离线用户。为了跟踪在线用户,我正在使用此表
user_id |时间戳
我每 20 秒更新一次所有在线用户的时间戳。所以我可以通过将当前时间戳与表中的时间戳进行比较来找出谁都离线。
现在问题是这样的: 我使用长轮询来更新用户的在线状态。即当用户登录时,我对一个看起来像这样的脚本运行 ajax 调用。
<?php
set_time_limit(0);
while(1){
updateUserTimestamp();
sleep(20);
}
?>
上述代码运行良好。但问题是,即使在用户关闭浏览器后,它仍像幽灵进程一样继续运行,并不断更新时间戳并占用资源。我希望它在客户端关闭时停止浏览器。
请帮忙。
【问题讨论】:
-
哇..你不想这样做。这使 PHP 进程在您的服务器上无限运行。您不能在应用程序的某个全局类/脚本中执行此操作吗?
标签: php ajax loops long-polling infinite