【问题标题】:Apache with Comet Support支持彗星的 Apache
【发布时间】:2011-12-02 19:30:31
【问题描述】:

我想构建一个支持聊天的多人网络游戏应用程序。我认为应用程序必须同时处理数百个连接。

我计划将我的应用程序托管在共享网络托管中,它有这些限制(很可能类似于PHP + Comet (long-polling) scaling / hosts):

  • 看来我无法更改 Web 服务器。很可能它使用的是 Apache。
  • 支持 MySQL 5、PHP 5.3.x、Perl、Python、Ruby on Rails、CGI

(更准确地说,我将使用 HawkHost 的共享虚拟主机。)

这是我的研究结果,然后是我的问题:

  1. 一些资源(如Python Comet Server)说PHP 不适合处理并发连接,而​​Python 是更好的选择。这是真的吗?
  2. 我在 PHP 中尝试了长轮询技术(虽然我不知道它是否正确实现,例如 Comet issue with abandoned open connections),使用“无限循环直到数据更改”。方法。这几乎可以工作。剩下的问题是,当浏览器关闭时,服务器进程永远不会死掉(服务器不知道连接已经终止,数据永远不会改变)。 PHP有什么方法可以检测浏览器是否已经终止,从而停止循环?

我一直在四处寻找答案,但仍然无法得出任何结论。这个话题在 StackOverflow 上也被问过很多次了,如果我听起来重复,我很抱歉>.<.>

目前我能够使用 PHP、MySQL 和 JQuery for JS 进行编码。我对 Comet 和 Server Push 这个术语还是很陌生。如有必要,我也愿意学习 Python 等新的脚本语言。

我感谢任何关于使用什么脚本语言、框架和技术来启动我的项目的见解。

【问题讨论】:

  • 我刚才也有同样的疑惑。我相信问题不在于 PHP,而在于 Apache。与 apache 相比,使用 comet 的 Lighttpd 表现得更好。搜索stackoverflow,有一些关于它的很好的讨论。示例:stackoverflow.com/questions/603201/using-comet-with-php
  • 我也遇到过那个线程,以及 StackOverflow 中的许多相关线程。问题是我仅限于共享虚拟主机中的 apache。因此,鉴于上述情况,我正在寻找我能得到的最佳解决方案。也许我可以使用 Perl 或 Python 来稍微提高性能。但无论如何,感谢您的快速响应,@ZolaKt:D
  • 我知道这不是你要找的,但通常你可以在没有长轮询的情况下做到这一点。不管有没有它,如果您仍然需要定期检查数据库,那将是瓶颈。长轮询获得的唯一好处是请求数量较少,这将导致性能降低,但我仍然认为,如果数据库查询花费的时间比发出请求的时间长(这可能总是......一些基准测试会很好,但没有发现任何有用的东西)

标签: apache2 comet long-polling multiplayer server-push


【解决方案1】:

所以你可以使用 Python。然后你可以使用Tornado。 (psst...facebook 使用它)

我在打开连接时遇到了同样的问题。只是不要花时间在 PHP 中搜索解决方案 - 以后你会后悔的。我曾是。只需使用为 Comet 制造的产品。如果你更喜欢 JAVA,那么有:CometD

对于游戏,请获得正常托管。这些天它们很便宜。

【讨论】:

  • “普通主机”是指虚拟专用服务器(VPS)吗?我认为当应用程序变得非常大并且需要处理更多连接时,这是一个很好的解决方案,因为我可以配置服务器本身。我也熟悉Java。谢谢你的想法,@ernestas!
【解决方案2】:

如果您有一个共享的托管环境并且实施了许多限制,那么外包实时功能是一个好主意。我会这么说,因为我在这样一家公司工作,Pusher。但我希望其他人会支持我。

使用托管解决方案时,您可以通过向 RESTful API 发出 HTTP 请求来推送通知。然后,该服务会将消息传递给连接的 Web 客户端(浏览器)。浏览器确实需要包含一个脚本标签或使用一个也连接到托管服务的库。

主要好处是:

  • 无需安装或维护
  • 无需处理持久连接 - 无需使用资源
  • 非常简单的用法:在应用中编写脚本标签并调用REST API
  • 托管解决方案处理扩展

另外,这是list of hosted realtime solutions

【讨论】:

  • 哇,这是一份不错的服务清单!我没有托管服务的主要概念,但我会尝试 Pusher。谢谢,@leggetter!
  • 你的 Pusher 摇滚,@leggetter! :D
  • @EddieSullivan 链接已修复。
猜你喜欢
  • 2011-12-23
  • 1970-01-01
  • 2011-06-25
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 2010-11-24
  • 1970-01-01
相关资源
最近更新 更多