【问题标题】:What benefits does long-polling have in php?长轮询在 php 中有什么好处?
【发布时间】:2011-11-05 00:21:48
【问题描述】:

假设我正在创建一个网络聊天,其中聊天消息存储在 SQL 数据库中(我不知道该怎么做),使用 AJAX 进行长轮询而不是简单地每 x 秒轮询一次有什么好处?

由于 PHP 仅在您打开页面时运行,长时间轮询的 PHP 脚本也必须每秒检查新消息。那么长轮询有什么好处呢?无论哪种方式,我都会有 x 秒的延迟,只有长轮询才会在服务器上进行定期检查。

【问题讨论】:

    标签: php long-polling


    【解决方案1】:

    就您而言,长轮询有两个优​​点:

    首先,长轮询允许客户端在服务器上可用后立即接收消息更新,从而提高您的网络聊天的响应能力。

    第二个优点是客户端应用程序几乎不需要更改即可在此模式下工作。从客户端的角度来看,阻塞的轮询请求看起来像是网络延迟,唯一的区别是客户端不需要在发送轮询请求之间等待,就像您只是每 x 秒轮询一次一样。


    但是,让服务器保留请求会增加服务器负载。通常具有同步请求处理的 Web 服务器每个请求使用一个线程,这意味着等待请求会阻塞处理它的线程。因此,使用长轮询从服务器获取消息更新的 100 个聊天客户端将阻塞 100 个线程。

    这些线程中的大部分都会处于等待状态,但是每个线程仍然会占用相当多的资源。这个问题在 Comet 中通过异步请求处理来解决,这是一种允许请求阻塞而不阻塞线程的技术,现在 受到包括 Tomcat 在内的多个 Web 服务器的支持。

    我的回答参考:oBIX Watch communication engine reference document

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 2012-09-06
      • 2011-10-12
      • 2013-11-17
      • 2011-09-19
      • 2014-05-27
      相关资源
      最近更新 更多