套接字服务器上的多端口性能


Socket server on multiple ports performance

我想在AS3中构建一款游戏,并在PHP/MySQL中完成大部分逻辑,因为我在PHP方面比任何其他推荐的语言(如JAVA)都更有经验。

我读过很多关于PHP不是PHP套接字服务器的好选择。主要原因是它无法处理超过1000个客户。

但是我从来没有找到一个好的回答,为什么它实际上是这样的?之后PHP进程崩溃了吗?是否可以在不同的端口上设置2个套接字服务器?到时能处理2000个客户吗?还是没有?

如果您了解AS,我实际上会推荐Java或Node。AS3与Java和JavaScript非常相似(有些不同),这将使转换变得非常轻松。您必须决定的神奇之处在于,每秒钟有多少消息通过您的每个客户机。如果负载较轻,则首选Node。如果负载比较重,最好使用Java。

如果,然而,你想坚持PHP,你将需要多个游戏实例运行从CLI (不是从Apache)。然后,您可以通过标准套接字以您喜欢的任何方式连接到它们。这很容易做到。

最难的部分是同步所有实例。您可以通过将它们全部连接到一个专门用于向服务器中继消息的实例,或者让它们在彼此之间连接来实现这一点。关于如何做到这一点,游戏通信理论书籍和教程将派上用场。

你的其他问题将是,如果使用PHP,除其他外:

  • 每个守护进程的socket连接限制
  • PHP的单线程特性
  • 构建一个事件多客户端套接字接口,从本质上没有这个
与Java相比,PHP在这方面处于严重的劣势。然而,这是可能的。