php comet,在PHP中使用Comet吗?

小编典典

同意/扩展已经说过的内容,我认为FastCGI不能解决问题。

Apache

进入Apache的每个请求都将使用一个工作线程,直到请求完成为止,这对于COMET请求来说可能是很长的时间。

关于Ajaxian的这篇文章提到在Apache上使用COMET,这很困难。该问题并非特定于PHP,它适用于您可能想在Apache上使用的任何后端CGI模块。

建议的解决方案是使用“事件”MPM模块,该模块更改将请求分配到工作线程的方式。

该MPM尝试修复HTTP中的“保持活动状态”。客户端完成第一个请求后,客户端可以保持连接打开,并使用同一套接字发送其他请求。这样可以节省创建TCP连接时的大量开销。但是,Apache传统上会保留整个子进程/线程来等待来自客户端的数据,这有其自身的缺点。为了解决此问题,该MPM使用专用线程来处理侦听套接字和处于“保持活动”状态的所有套接字。

不幸的是,这也不起作用,因为它只会 在 请求完成后才“打no” ,等待客户端的新请求。

PHP

现在,考虑问题的另一面,即使通过在每个彗星请求中保留一个线程来解决该问题,每个请求仍将需要一个PHP线程-这就是为什么FastCGI无法提供帮助。

您需要像Continuations这样的东西,当观察到彗星请求触发事件时,它可以恢复。AFAIK,这在PHP中是不可能的。我只在Java中看到过它-请参阅Apache Tomcat服务器。

编辑:

这里有一篇关于使用负载平衡器(HAProxy)的文章,它允许您在同一服务器的端口80上同时运行apache服务器和启用了彗星的服务器(例如,jetty,tomcatfor Java)。

2020-05-26

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值