我正在開發一個簡單的聊天應用,每個房間可能有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