我正在开发一个简单的聊天应用,每个房间可能有10到20个用户。简单的PHP长轮询聊天脚本,太简单了?
向数据库查询新消息的脚本看起来对于获取的所有请求来说太简单了。
下面的代码回路新邮件,脚本的其余部分是刚开的变量,查询的建设和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秒钟,然后发送另一个请求 以获取新消息。
但是,如果脚本找到新消息,浏览器会在收到来自服务器的新消息的响应后立即请求更多新消息。
这个过程的推移和...
那么我怎样才能进一步优化这一进程? 这是一样好吗? 在我的本地服务器上工作正常,但恐怕只有少数用户可能会因为所有请求和循环而使实时服务器(共享主机)超载。
这里是现场演示,你可以用萤火http://pixbush.com/chat/chat.php
简单是我们作为程序员**争取的**。 – 2010-09-02 01:56:57
链接不再工作。 – kachar 2012-08-06 13:24:32