【发布时间】:2013-06-21 16:09:35
【问题描述】:
我有一个 PHP 脚本,当它被调用时,它会做一些事情,然后休眠 3 秒,然后回显它的结果。
然后我有这个页面,它每隔1/10 秒调用一次上面的脚本(带有 Ajax 请求)。当我收到响应时,我会在 div 元素中写入一个数字。
问题是,onreadystatechange 处理程序每 3 秒触发一次,总共写入 30 个数字。
sleep() 的其他替代品是否符合我的需要?
这里是被请求页面的代码sn-p:
ignore_user_abort(true);
$time=microtime(true)*10000;
changemystatus(1, $time); //this writes to a database
sleep(3);
if ($time>=getmytime()){ //getmytime() reads the data previously written by changemystatus()
setstatus(0); // still writing to that DB
echo("1");
}else echo ("0");
基本上,如果用户不再发送请求(因为他走了,或者他的连接中断,或者他禁用了 JS 或其他什么),我希望数据库中的“状态”字段更改为 0,以便其他玩家可能知道他现在“离线”了。
【问题讨论】:
-
服务器应该是Apache。
-
您是否正在尝试获取 PHP 脚本的进度?你为什么要这样做?
-
问题不够精确,您将不得不指定更多细节。请张贴代码。
-
因为在我睡了 3 秒后,我检查是否同时再次调用了脚本:如果没有,则用户已断开连接。 (我还添加了 ignore_user_abort(true) )
-
不,我想确保用户处于活动状态并连接到该页面。它是回合制浏览器游戏的一部分