0

我正在尝试制作一个聊天脚本,但我不希望访问者的浏览器每 0.5 秒要求一条新消息。相反,我希望服务器立即发送新消息。

我想我可以向服务器发送一个请求,如果没有任何新消息,服务器会等到有新消息。这个等待时间不需要很长,大概2-3秒。

我尝试了PHP的sleep()功能:

while(1)
{

   $temp=$db->query("SELECT * FROM chat WHERE (id=36 OR id=12) AND clock>".$last_time);

   if ($temp->rowCount()!=0) break;

   sleep(1);

}

当其他访问者中断循环时,这种“等待中断”过程有效,但是当启动循环的访问者尝试发送消息时,他会永远等待。

我会以错误的方式解决这个问题吗?

编辑 *系统是 IIS 7 - PHP 版本 5.3.6

4

1 回答 1

0

我不太清楚你为什么facebook-chat在此处标记。

无论如何,该方法是不合适的,并且会使您的服务器因数据库查询而过载。您应该使用长轮询websockets。让用户轮询更新可能听起来很多,但如果做得适当,它就很好。

于 2013-03-07T19:35:07.910 回答