【问题标题】:When exactly does the Guzzle 6 promise resolve?Guzzle 6 的承诺究竟何时解决?
【发布时间】:2016-03-25 00:08:34
【问题描述】:

我们正在开发基于 Guzzle 6 的 PHP 客户端,以实现对响应时间敏感的案例。

Guzzle 可以执行 async requests via curl 返回承诺 API。因为可以将主体作为流检索,所以我想知道承诺是否解决(例如,通过 wait() 强制)

a) 何时收到最后一个标头(如on_headers hook)?

b) 尸体何时被完全接收?

我试图在 Guzzle 的资源中找到答案,但我失败了。

【问题讨论】:

    标签: php guzzle


    【解决方案1】:

    答案是选项b

    如果您使用默认的基于 Curl 的调用,则在 curl 调用完成之前,promise 不会解析。在 CurlHandler 的__invoke

    curl_exec($easy->handle);
    ...
    return CurlFactory::finish($this, $easy, $this->factory);
    

    返回:

    return new FulfilledPromise($easy->response);
    

    CurlMultiHandler 也有类似的代码。 on_headers 函数中没有解决承诺,所以大概是在主体完成时。我相信流实际上是基于内存/磁盘的,而不是基于网络的。

    如果你仔细想想,这是有道理的;在您知道所有下载的数据都正常之前,您不应该成功地解决承诺。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-05
      • 2013-06-22
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多