如何将可扩展的长轮询服务器与PHP集成?

时间:2013-02-03 20:52:08

标签: php python apache comet long-polling

我已被“招募”,以便帮助处理当前使用Apache服务器用PHP编写的Web项目。我们希望集成一个实时(或至少非常接近它)的聊天功能。可扩展性是一个明确的问题,这种类型的工作绝对不是我的典型。

我所阅读的有关创建此类聊天功能的所有内容都需要使用“长轮询”,因此服务器不会快速过载,而且会崩溃。 PHP和Apache不利于实现这样的功能,所以我已经探索了一些替代方案,例如Twisted Python。

该网站大约有大约7,000行PHP(即,直接切换整个语言的语言非常困难),所以我的问题是如何尝试集成python和设置来管理这种情况单独的服务器?或者,这是一个非常糟糕的方法吗?还有其他更适合的替代方案吗? (遗憾的是,许多PHP Comet,甚至是AJAX,我发现的解决方案都没有丝毫缩放。注意,Apache服务器不一定是必需的;但是,任何使用的服务器都必须使用PHP和Python等,缺少有单独的服务器。)

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

我会在服务器上使用Tornado来编写聊天应用程序。然后,客户端服务器通信可以通过websockets进行。如果您在客户端使用SockJS,您还可以通过长轮询支持旧版浏览器。有许多使用Tornado编写的示例聊天客户端。它的开始非常简单,并且具有出色的可扩展性。像这样的聊天服务器可以为数千个客户端提供服务而不显示任何明显的CPU活动。

这是一个例子,可能有点过于设计https://github.com/diggidanne/websocket-chat/blob/master/server.py