【问题标题】:How can I know if socketIO will offer any benefit over long-polling?我怎么知道 socketIO 是否会比长轮询提供任何好处?
【发布时间】:2013-01-17 21:55:12
【问题描述】:

我最近继承了一个使用 CodeIgniter 框架的 PHP 应用程序——它可以完美地处理身份验证、用户会话、CRUD 操作、路由、模板以及应用程序的几乎所有方面。但是,一项功能需要使用长轮询。某些管理员需要对其他用户的操作进行近乎实时的更新。现在几百个用户一切正常,但我们正在扩大以支持几千个用户,我担心长轮询会导致一些性能问题。

这里是长轮询过程的基础知识:

  1. 浏览器发出 GET 请求,启动长轮询过程。

  2. 长轮询进程每 1/4 秒检查一次 txt 文件的时间戳。

  3. a) 如果更新了 txt 文件,长轮询过程将更改返回给浏览器并更新视图。

    b) 如果在 25 秒内没有发现任何变化,则长轮询结束并返回 null。

  4. 重复步骤 1。

此过程发生在 codeigniter 框架之外。我认为用 socket.io 实现替换这个过程是个好主意。

socket.io 会比长轮询更好吗?如果是这样,在没有实际构建演示和进行负载测试的情况下,我有什么令人信服的证据?在我的脑海中这似乎是个好主意,但我需要证明做出转换的时间和精力是合理的。

另外,如果这没有意义,或者按照 SO 标准“不是一个真正的问题”,我们深表歉意。我对后端可扩展性还很陌生,而且大部分这些东西对我来说都是全新的。请在否决之前提供有用的指导以重新措辞(如果需要)。谢谢。

编辑:这里的首选是保持原样,因为撕掉代码并用新东西替换它的成本很高,尤其是当新东西未经测试时。所以我想我的问题是,当/如果长轮询解决方案碰壁时,socket.io 会是一个可行的替代品吗?

【问题讨论】:

  • 我猜许多服务器线程轮询文件是这里的主要痛苦,而不是空闲的 TCP 连接。
  • PHP 的filemtime 函数用于轮询文件。在这一点上,它似乎不是很占用 CPU,但在规模上?

标签: php performance socket.io scalability long-polling


【解决方案1】:

我认为 websockets 比长轮询更好,轮询主要是随着应用程序规模的扩大,您会产生不必要的网络吞吐量开销。检查这两个链接:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-28
    • 2012-08-14
    • 2021-10-05
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    相关资源
    最近更新 更多