苦苦挣扎(理解)PHP异步请求

时间:2015-11-19 15:43:24

标签: php asynchronous guzzle

我真的很难理解PHP异步请求的工作方式。在我看来,在PHP中不能有任何真正的异步行为,因为要从异步请求接收响应,你必须延迟脚本的执行(基本上是阻塞),然后失败了目的..对吗?

我在网站上的某个页面尝试做的是:

  1. 向(本地)控制器发起AJAX请求以启动远程API 请求
  2. 使用针对远程API的GuzzleHTTP请求循环
  3. 完成每个请求后,将结果发送到socket.io服务器,然后该服务器将消息发送回侦听客户端(发起AJAX请求的原始页面)
  4. 现在,我有这个工作 - 有一点需要注意:GuzzleHTTP请求不是异步的,远程API非常慢(通常需要大约10秒才能收到JSON响应)所以当有10个任务时,我的连接是服务器冻结超过一分钟。打开新选项卡/窗口并尝试访问该站点会导致等待原始脚本运行完成。

    这似乎表明我误解了HTTP请求的工作原理。我认为,就服务器而言,每个浏览器窗口(或请求)都是完全独立的,但从我看到的结果来看,也许情况并非如此?

    这就是为什么我开始研究异步请求并发现它们看起来并非如此......异步。

    所以我真正想要的是帮助弥补我对以下方面的差距/误解:

    • 为什么阻塞首先发生(就新的,完全独立的请求而言)
    • 我可能会寻求实施解决方案。

0 个答案:

没有答案
相关问题