使用PHP的Comet技术?

84
我在考虑使用PHP后端实现实时聊天,但在讨论Comet的网站上看到了这个评论:
引用: 我的理解是,PHP对于Comet来说是一个可怕的语言,因为Comet要求你对每个浏览器客户端保持持久连接。使用mod_php意味着为每个客户端绑定一个Apache子进程,这在规模上根本无法扩展。我认识的做Comet的人大多使用Twisted Python,它专门设计用于处理数百或数千个同时连接。
这是真的吗?还是有办法可以解决这个问题?

4
你可以将PHP作为FastCGI运行... - Itay Moav -Malimovka
5
使用NodeJS作为服务器来维持客户端连接,使用JavaScript中的WebSockets从浏览器连接到服务器。PHP在这种情况下可以作为一个特权客户端连接到NodeJS,推送一些服务数据,在客户端上进行处理。 - Artjom Kurapov
1
@ArtjomKurapov 你可以将 PHP 改造成一个 Web 服务器,从而绕过 Apache 处理请求的方法 - 就像一个真正的 PHP 服务器只处理长连接请求一样。 - Christian
@Christian,如果您指的是自 PHP 5.4 起内置的 Web 服务器,则仅用于开发目的,将其用于生产环境是一个不好的主意。 - Artjom Kurapov
2
@ArtjomKurapov 不,我指的是使用PHP套接字编写一个真正的PHP服务器,通过监听端口80并无限期地阻塞输入来实现 - 这实际上就是服务器的工作原理。这已经在像phpwebsocket这样的项目中得到了应用。 - Christian
11个回答

0

我认为这更多是一个问题,即始终有很多Apache线程运行是一个问题。 如果以与PHP(通常)相同的方式通过Apache工作,那么任何语言都会存在这个问题。


1
我认为关键是通常情况下,你会在每个请求中运行一个独立的 PHP 进程,而不是每个请求一个线程。 - troelskn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接