首页 > 后端开发 > php教程 > PHP 能否有效处理基于 Comet 的实时消息传递?

PHP 能否有效处理基于 Comet 的实时消息传递?

DDD
发布: 2024-12-31 00:26:16
原创
544 人浏览过

Can PHP Effectively Handle Comet-Based Real-Time Messaging?

PHP 可以支持 Comet 实时消息传递吗?

可以考虑使用 PHP 作为后端来实现实时聊天。然而,一个常见的批评给这个想法蒙上了阴影:

“据报道,PHP 对于 Comet 来说是一个糟糕的选择,因为它需要与每个浏览器客户端保持持久连接。使用 mod_php 需要为每个浏览器客户端专门绑定一个 Apache 子进程。客户端,导致解决方案无法扩展。”

深入研究问题

为了解决这个问题,让我们检查一下潜在的挑战:

Apache 的线程管理

每个 Apache 请求都会使用一个单独的工作线程直至其完成。以持续时间长着称的 Comet 请求可以独占这些线程。

PHP 的并发执行限制

即使 Apache 的线程分配得到解决,PHP 的本质还是需要唯一的线程根据要求。结果,FastCGI 未能解决这种情况。

Continuations:超出 PHP 的范围

Continuations 本身并不支持在事件触发时恢复 Comet 请求。 PHP 支持。

可以解决方案

尽管存在这些障碍,但仍然存在解决方法:

  • Apache 的事件 MPM: Apache 的“事件”MPM 以不同的方式处理 Keep Alive 状态,但它仍然有效将线程“暂停”推迟到请求之后
  • 负载均衡器路由:通过使用负载均衡器,可以委托 Apache 和支持 Comet 的服务器(例如 Jetty、Tomcat)来处理单个端口上的请求。

注意事项

这些解决方案附带警告。事件 MPM 可能不会提供显着的改进,并且负载平衡会给架构带来额外的复杂性。

以上是PHP 能否有效处理基于 Comet 的实时消息传递?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板