栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在PHP中使用Comet吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在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)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/387181.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号