我想創建一個新的通知警報使用PHP和Javascript。假設有100個用戶當前登錄到在線公告欄應用程序,並且任何一位用戶發佈新通知。我想要在所有用戶屏幕上立即發出警報信號。 我知道,這樣做的最簡單方法是不斷Ping服務器,但我不想這樣做,因爲它會降低服務器速度。 此外,我在共享主機上。所以我沒有訪問任何套接字端口。這意味着,我無法建立從服務器到用戶機器的任何直接套接字通信信道。如何自動反映新的更新(在數據庫)到用戶頁
任何人都可以建議我一些其他的解決這類問題?
我想創建一個新的通知警報使用PHP和Javascript。假設有100個用戶當前登錄到在線公告欄應用程序,並且任何一位用戶發佈新通知。我想要在所有用戶屏幕上立即發出警報信號。 我知道,這樣做的最簡單方法是不斷Ping服務器,但我不想這樣做,因爲它會降低服務器速度。 此外,我在共享主機上。所以我沒有訪問任何套接字端口。這意味着,我無法建立從服務器到用戶機器的任何直接套接字通信信道。如何自動反映新的更新(在數據庫)到用戶頁
任何人都可以建議我一些其他的解決這類問題?
這是一個COMET應用程序。谷歌COMET和你應該找到很多信息。基本上有兩種技術可以通過HTTP檢索異步通知。首先是ping服務器,你已經說過你不想這樣做。另一種技術是向服務器發送請求,並讓服務器僅在存在某些數據時才作出響應。換句話說,服務器不是每秒鐘ping一次,而是在50秒和50秒之後才收到一條消息,服務器只需要持續50秒的第一個請求,直到有事發送,然後作出響應。有些工具會爲你做這一切。
但是有一個HTTP服務器打開連接的最大數量的問題。在共享主機上,這將是比服務器負載更大的問題,我想。 – 2010-03-18 11:31:59
這裏絕對沒有免費的午餐。 Pinging消耗CPU時間,而長請求方法消耗資源。大多數支持COMET的服務器都允許應用程序以某種方式將請求放在冰上,這樣它至少在等待響應時不會使用線程或進程。它仍然使用文件描述符,但服務器至少有1000個。如果您有1,000名用戶都在等待COMET響應,那麼從商業角度來看,您的狀況良好,並且可能會獲得更多的服務器。 – 2010-03-18 12:05:00
如果你已經有一個解決方案,你爲什麼要問另一個解決方案?你爲什麼要求解決想象中的(假設的)問題,而不是真正的問題?從你知道它會減慢服務器?從經驗和精確分析?我想不。 – 2010-03-18 11:30:26