【问题标题】:Call multiple APIs at once [closed]一次调用多个 API [关闭]
【发布时间】:2018-02-09 03:41:51
【问题描述】:

我正在使用 PHP/cURL 一次发送 15 个 API 请求(运费报价)。每个 API 都有自己的文件,我使用 include('example.php') 将文件包含到主请求页面中。然而,正如你们大多数人已经知道的那样,PHP 是逐行进行的,这反过来又需要很长时间才能得到所有的响应。有没有办法可以包含这些文件并让它们同时运行?我知道这对于 PHP 来说是不可行的,所以我想知道是否有另一种选择,我可以在 PHP 旁边使用另一种编程语言来实现这一点。

【问题讨论】:

  • 这是基于意见的。试试 ruby​​ 和 eventmachine。戈朗。二郎。
  • 有 curl_multi。但是 PHP 本质上是单线程的,唯一能够并行触发多个请求的方法是将主脚本作为单独的实例多次执行。

标签: php curl


【解决方案1】:

这有点像野兽,但请查找curl multi

这是一种一次性发出多个 curl 请求的方式。我成功(最终)让它一次发出 200 个请求。基本上你打包 X 请求,触发 curl_multi 异步发出所有请求。然后你循环等待状态告诉你所有的回复都已经收到并去处理它们。 (非常基本的描述)

【讨论】:

    【解决方案2】:

    产生 15 个线程。完成此操作的最简单方法是启动 15 个请求。

    您可以通过关闭连接使 PHP 代理请求非阻塞。

    要关闭连接:

    ignore_user_abort(true);
    header("Content-Length: 0");
    header("Connection: Close");
    flush();
    session_write_close();
    // do your API call here and report back to a database or some other means
    // you can't return or output anything because the other end isn't listening any more
    

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2022-01-14
        • 2020-03-07
        • 2020-10-05
        • 1970-01-01
        • 1970-01-01
        • 2016-11-20
        • 2019-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多