我想構建一個支持聊天的多人網頁遊戲應用程序。我認爲應用程序將不得不處理數百個同時連接。阿帕奇與彗星支持
我打算舉辦一個共享的虛擬主機,它有這些限制(最有可能類似於PHP + Comet (long-polling) scaling/hosts)我的應用程序:
- 似乎它不會我可以改變Web服務器。很可能它使用的是Apache。
- 支持MySQL 5,PHP 5.3.x,則應Perl,Python和Ruby on Rails的,CGI
(更確切地說,我將使用HawkHost的共享虛擬主機。)
這裏是我的研究成果,其次是我的問題:
- 一些資源(如Python Comet Server)說,PHP是不好處理的併發連接,而Python是更好的選擇。這是真的?
- 我試過了PHP中的長輪詢技術(儘管我不知道它是否正確實現,如Comet issue with abandoned open connections),使用「無限循環直到數據發生變化」。方法。這幾乎可以工作。剩下的問題是,瀏覽器關閉時服務器進程永遠不會停止(服務器不知道連接已經終止,數據也不會改變)。有沒有什麼方法可以檢測瀏覽器是否被終止,以便它停止循環?
我一直在尋找答案,但我仍然無法得出任何結論。這個話題在StackOverflow上也被問過這麼多次,如果我聽起來可能會重複,我很抱歉>。 <。
目前我能夠使用PHP,MySQL和JQuery for JS進行編碼。對於Comet和Server Push這個術語,我還是個新手。如果有必要,我也願意學習Python等新的腳本語言。
我很欣賞任何有關使用哪種腳本語言,框架和技術來啓動我的項目的見解。
前段時間我很想知道。我相信問題不在於PHP,而在於Apache。與彗星相比,Lighttpd的表現要好得多。搜索stackoverflow,有幾個很好的討論。例如:http://stackoverflow.com/questions/603201/using-comet-with-php – ZolaKt
我也遇到過這個線程,以及StackOverflow中的許多相關線程。問題是我僅限於我的共享虛擬主機中的apache。所以我正在尋找我能得到的最佳解決方案,因爲我的情況如上。也許我可以利用Perl或Python來稍微提高性能。但無論如何,感謝您的快速響應,@ZolaKt:D – Arkross
我知道它不是你在找什麼,但通常你可以不用長時間輪詢。無論是否需要,如果您仍然需要定期檢查數據庫,那將是瓶頸。只有通過長輪詢才能得到的請求數量較少,這會導致性能下降,但我認爲,如果db查詢需要更多時間而不是提出請求(這可能總是... ...某些基準測試會很好,但沒有發現任何有用的東西) – ZolaKt