我一直在做一些研究,以顯示「用戶在線」計數器的最佳方式,更新到第二個嘗試避免連續的Ajax輪詢。PHP共享主機上的WebSockets
顯然WebSockets似乎是最好的選擇。因爲這是一個內聯網,所以我會讓它成爲使用Chrome或Safari的必要條件,所以不應該存在兼容性問題。
我一直在閱讀一些關於WebSockets的文章,因爲我是新手,我想我非常瞭解它是如何工作的。
我不是很確定如何用PHP實現它。 Node.js似乎是自然的選擇,因爲它的「始終運行」性質,但這不是一個選項。
爲什麼我最困惑的是PHP運行的事實,當它完成時,它結束。如果PHP結束,套接字連接不會丟失?或者,如果PHP重新運行它會回看用戶的IP? (我不認爲這有可能)
然後我發現這個庫 http://code.google.com/p/phpwebsocket/ ,但它似乎是一個小老頭(僅提及鉻是夜間使用WebSockets兼容)
在一個點上說:「從在命令行中運行server.php程序來偵聽套接字連接。「這意味着我需要SSH,許多共享託管計劃沒有。
我還有一個疑問是該庫的源這個其他行:
set_time_limit(0);
這是否意味着PHP文件將連續運行?這是允許共享主機?從我知道的所有主機在1分鐘2分鐘超時後殺死php。
我有一個與在線用戶的MySQL表,我想使用PHP通過websocket向用戶登錄到這些在線用戶的數量。有人可以幫助我,或者在有更好的信息的地方指出我可以實現的目標嗎?
感謝
網絡套接字非常受歡迎,但如果可以使其發揮作用,服務器發送的事件可能更適合您的目的。 SSE顯然可以在JS的舊版瀏覽器中支持,而websocket不支持,而且你似乎不需要雙向通信。我試圖通過PHP SSE問題在這裏工作:http:// stackoverflow。com/questions/9070995/html5-server-sent-events-prototyping-ambiguous-error-and-repeated-polling – tomfumb 2012-02-21 02:07:12
我沒有任何兼容性問題,因爲我可以控制使用的瀏覽器,並且我對WebSockets感興趣,已經看到它在trello.com上的工作,它的作品像魅力 – Juan 2012-02-21 03:22:01
我建議你不要嘗試使用PHP的有狀態應用程序,因爲PHP首先是爲此設計的。正如您所指出的,共享主機可能會阻止打開任意套接字。您最好的選擇是獲得您自己的VPS服務器http://www.lowendbox.com/ – 2012-02-21 06:25:47