【问题标题】:How does Guzzle send async web requests?Guzzle 如何发送异步 Web 请求?
【发布时间】:2016-06-09 21:34:09
【问题描述】:

cURL 是同步的。那么像Guzzle 这样的库是如何发送异步网络请求的呢?

【问题讨论】:

    标签: php guzzle


    【解决方案1】:

    Guzzle CurlMultiHander 包装了 PHP 的内置 curl_multi_* 函数,该函数本质上包装了 cURL Multi API

    来自 cURL 文档:

    要使用多接口,您必须首先使用 curl_multi_init 创建一个“多句柄”。然后,此句柄将用作所有其他 curl_multi_* 函数的输入。

    使用多句柄和多接口,您可以并行进行多个同时传输。每个单次传输都是围绕一个简单的手柄建立的。您可以创建所有需要的简易句柄,并使用 curl_easy_setopt 为每个简易句柄设置适当的选项。

    【讨论】:

      【解决方案2】:

      Guzzle 的传输处理程序之一是 CurlMultiHandler,它使用 PHP 的 curl_multi_* 函数,允许异步传输。

      请求是异步启动的,函数curl_multi_select() 允许Guzzle 等待,直到其中一个 curl 请求接收到数据并处理它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-02
        • 2016-10-06
        • 2022-11-28
        • 1970-01-01
        • 1970-01-01
        • 2020-03-22
        • 2017-07-09
        • 1970-01-01
        相关资源
        最近更新 更多