【发布时间】:2011-12-26 23:11:30
【问题描述】:
我正在开发一个网站,该网站显示来自数据库的一些经常更改的数据(队列状态和聊天对话)。我当前的设置是 Apache/PHP/MySQL。自然,我想避免每 x 秒轮询一次服务器,因为这不能很好地扩展。我想做反向 ajax 长轮询,但是,我读到 Apache 不能很好地处理这个问题,因为它很快就会用完工作线程。还有许多其他的 Web 服务器可以解决这个问题:nginx、tornado 等。但是,我的问题是,PHP 是我所知道的唯一服务器端脚本语言。此外,我已经编写了一些 PHP 脚本,所以如果可以的话,我想保留它们。只要我还能使用 PHP,我就可以切换服务器。
但是在做了更多研究之后,我读到有人说 PHP(PHP-FPM?)也会为每个请求创建一个进程,这意味着如果我有数百/数千个打开的连接,就会有数百个/数千个进程,这也是个问题。
我是否可以得出结论,使用 PHP 制作长轮询网站没有很好的可扩展方法?我应该放弃 PHP 并学习另一种服务器脚本语言吗?我现在可以继续使用我当前的设置 (Apache/PHP) 开发长轮询,但我不希望脚本语言的选择在我部署时对我的系统的可伸缩性造成任何限制。所以我该怎么做?我对网络编程不是很有经验,所以如果那里有任何大师可以给我一些指示,我将不胜感激!谢谢!
【问题讨论】:
-
我自己没有这样做,但可以选择使用 js 套接字吗?也许也使用 node.js。浏览器中对 websocket 的原生支持正在改进,但我猜 jquery 插件会处理这个问题?
-
我并没有真正考虑 websocket,因为它不受所有主要浏览器的支持。实际上,我已经研究过 node.js,但据我所知,它仍然相对较新,因此框架支持更加有限。我目前正在考虑使用 Django,这意味着我必须学习 python。我听说过有关该框架的好消息,但如果有办法解决性能问题,我仍然更喜欢使用 php。
-
我肯定会重新考虑 node.js - 对运行 node.js 的服务器端口的简单 ajax 请求可能只是诀窍。
标签: apache comet long-polling reverse-ajax php