2011-08-27 58 views
1

說我創建一個網上聊天,在聊天消息存儲在SQL數據庫(我不知道該怎麼做),並使用AJAX長輪詢而不是簡單地輪詢每x秒有什麼好處?長輪詢在PHP中有什麼好處?

由於PHP只運行當你打開網頁,長輪詢的PHP腳本必須檢查新郵件每隔秒爲好。長期投票有什麼好處呢?無論哪種方式,我將有一個延遲x秒,只有在服務器上進行定期檢查時才進行長輪詢。

回答

3

長輪詢,你的情況,有兩個好處:

首先,長輪詢允許客戶接受他們成爲可用的服務器上後,馬上消息更新,增加你的網上聊天的響應。

第二個好處是,幾乎沒有變化,在客戶端應用程序需要爲了在這個模式下工作。但從客戶的角度來看,封閉的輪詢請求看起來像一個網絡延遲,唯一的區別是,如果你簡單地輪詢每x秒的客戶端不需要發送輪詢請求之間的等待時間,因爲它會。


然而,使服務器保持請求,從而提高服務器的負載。具有同步請求處理功能的常用Web服務器對每個請求使用一個線程,這意味着等待請求會阻止處理它的線程。因此,使用長輪詢從服務器獲取消息更新的100個聊天客戶端將阻塞100個線程。

大多數這些線程將處於等待狀態,但每個線程仍然採用了相當多的資源。這個問題在彗星由異步請求處理解決,從而允許請求阻擋而不會阻塞一個線程,這是現在 由多個Web服務器包括的Tomcat支持的技術。我的回答:oBIX Watch communication engine reference document