2

我最近继承了一个使用 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 会是一个可行的替代品吗?

4

1 回答 1

1

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

于 2013-02-02T20:24:55.007 回答