我正在开发一个简单的聊天应用程序,每个房间可能有10到20个用户.
查询数据库以查找新消息的脚本对于它将获得的所有请求看起来过于简单.
下面是循环新消息的代码块,脚本的其余部分只是获取变量,构造查询和json响应对象:
$sleepTime = 1; //Seconds $data = ""; $timeout = 0; //Query database for data while(!$data and $timeout < 10){ $data = getQuery($sql); if(!$data){ //No new messages on the chat flush(); //Wait for new Messages sleep($sleepTime); $timeout += 1; }else{ break; } }
上面的块将每秒查询数据库中的新消息10秒,如果在10秒之后没有新消息它将通知浏览器.浏览器等待5秒钟,然后发送另一个请求
获取新消息.
但是,如果脚本发现新消息,则一旦获得来自服务器的新消息的响应,浏览器将立即请求更多新消息.
这个过程一直持续……
那么我怎样才能进一步优化这个过程呢?
这是好事吗?
在我的本地服务器上工作正常,但我担心只有少数用户可能会使所有请求和循环的实时服务器(共享主机)过载.
这是现场演示,您可以使用firebug http://pixbush.com/chat/chat.php查看