【发布时间】:2015-09-24 12:15:44
【问题描述】:
我在 Windows Server 2008 上通过 IIS 7.5 使用 PHP。
我的 Web 应用程序在后台使用 Ajax 反复请求 3 个不同的 JSON 页面:
- 每 6 秒第 1 页
- 第 2 页每 30 秒一次
- 每 60 秒第 3 页
它们检索与某些表的当前状态相关的数据。这样我就可以保持视图更新。
通常我对此没有太大问题,但最近我看到我的服务器充满了数百个未响应的请求,我相信问题可能是由于其中一个请求的延迟造成的。
如果每 6 秒请求一次的 page1 需要 45 秒来响应(由于数据库查询速度慢或其他原因),那么在我看来,请求开始一个接一个地堆积起来。 如果我有多个用户同时(或使用多个选项卡)连接到 Web 应用程序,事情可能会变得很糟糕。
关于如何避免此类问题的任何建议?
我正在考虑使用诸如 ZMQ 和 Sockets.io in the client side 之类的东西,但由于我请求的数据不会从任何用户操作中触发,我不知道如何触发它服务器端。
【问题讨论】:
-
让请求不需要 45 秒?还是不要每 6 秒请求一次?
-
@DarkFalcon 通常不需要 45 秒,但有时会。我正在寻求一种方法来解决这个问题。
-
我认为用 sockets.io 实现它是个好主意。类似的东西甚至使用 SO 来动态更新问题/答案投票/cmets
-
@MateiMihai 但是什么会触发来自服务器端的消息?
-
如果请求没有返回,就不要再发送了。但是修复服务器端代码并加快速度。
标签: javascript php ajax socket.io zeromq