我想构建一个支持聊天的多人网页游戏应用程序。我认为应用程序将不得不处理数百个同时连接。阿帕奇与彗星支持
我打算举办一个共享的虚拟主机,它有这些限制(最有可能类似于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