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


How to integrate a scalable long-polling server with PHP?

可以说,我被"招募"来帮助开发一个目前使用PHP和Apache服务器编写的web项目。我们想集成一个实时(或者至少是非常接近它的)聊天功能。可伸缩性是一个明确的问题,这种类型的工作绝对不是我的典型工作。

我读到的关于创建这样一个聊天功能的所有内容都需要使用"长轮询",这样服务器就不会迅速过载,甚至崩溃。PHP和Apache不利于实现这样的功能,所以我探索了一些替代方案,比如TwistedPython。

该网站大约有7000行PHP(也就是说,很难直接切换整个网站的语言),所以我的问题是,我如何管理这种情况,比如尝试集成python并设置一个单独的服务器?或者,这是一种非常糟糕的方式吗?还有其他更适合的选择吗?(遗憾的是,我发现的许多PHP Comet,甚至AJAX解决方案根本无法扩展。注意,Apache服务器不一定是必需的;然而,任何使用的服务器都必须与PHP和Python等兼容,而不是单独的服务器。)

谢谢你的帮助!

我会在服务器上使用Tornado来编写聊天应用程序。然后,客户端-服务器通信可以通过网络套接字进行。如果你在客户端使用SockJS,你也可以通过长轮询来支持旧的浏览器。有很多使用Tornado编写的聊天客户端示例。它的入门非常简单,而且具有极好的可扩展性。像这样的聊天服务器可以为数千个客户端提供服务,而不会显示任何明显的CPU活动。

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