【问题标题】:AJAX long-polling a REST API/Memcached in a PHP applicationAJAX 长轮询 PHP 应用程序中的 REST API/Memcached
【发布时间】:2010-11-22 04:35:08
【问题描述】:

不,我不是想看看我可以在一个问题标题中加入多少流行语。

我正在通过我的 PHP 应用程序中的 cURL 向某些 Web 服务发出 REST 请求。这些请求需要经常发出,因为大部分应用程序都依赖于这个 API。但是,请求存在严重的延迟(2-5 秒),这让我的应用看起来非常缓慢。

虽然我建议在 Memcached 中缓存这些请求的解决方案已经完成一半,但我仍然对应用程序中出现的这种延迟不满意。

所以我的想法是:我可以在后台实现 AJAX 长轮询,这样用户就不会完全体验到延迟。 REST 请求/Memcache 查找将全部通过 AJAX 以设定的时间间隔完成。

但这对我来说真的很新鲜,我不确定这是否是最好的方法。如果我走在正确的轨道上,我知道 PHP + Apache 不能很好地处理这样的事情。但是 PHP 是我知道的唯一语言。理想情况下,我想在 Python 中设置 Tornado 之类的东西,但我不确定我现在是否过度设计。

这里的任何想法都会有所帮助并非常感谢。

【问题讨论】:

  • REST 请求和您的 Web 服务之间的距离是多少?换句话说,延迟是由网络引起的,或者只是其余的请求很慢。您是否考虑过 REST 请求的缓存预热?
  • @ajreal,什么是缓存预热?
  • 预热是预加载一组数据,以便使用来自 REST 的有效数据填充内存缓存。这意味着,您可以运行后台作业来预取这些 REST URL,而不是让您的应用程序确定哪个 REST URL。您可以使用数据库或文件来跟踪您在应用程序中执行的 REST URL。

标签: php jquery ajax rest long-polling


【解决方案1】:

这是一个非常快速的转变,但我回过头来通过在整个相关流程中回显microtime() 来分析我的应用程序。事实证明,我没有并行化我的 cURL 请求,而这正是我真正受到打击的地方。执行此操作大约需要 2 秒,这意味着每个 cURL 请求连续完成时会有很长的延迟。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-07-15
  • 2012-11-06
  • 2011-09-19
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
相关资源
最近更新 更多