Guzzle 6 promise 到底什么时候解决?
When exactly does the Guzzle 6 promise resolve?
我们正在开发一个基于 Guzzle 6 的 PHP 客户端,用于响应时间合理的情况。
Guzzle 可以做到 async requests via curl 那 return 一个承诺 API。因为 body 可以作为流检索,所以我想知道承诺是否已解决(例如通过 wait() 强制执行)
a) 何时收到最后一个 header(如 on_headers hook)?
b) body 何时完全收到?
我试图在 Guzzle 来源中找到答案,但我惨遭失败。
答案是选项b
如果您使用的是默认的基于 Curl 的调用,则承诺在 curl 调用完成后才会生效。在 CurlHandler 的 __invoke
:
curl_exec($easy->handle);
...
return CurlFactory::finish($this, $easy, $this->factory);
哪个returns:
return new FulfilledPromise($easy->response);
CurlMultiHandler 存在类似的代码。 on_headers
函数中的承诺没有得到解决,所以大概是在主体完成时。我相信这些流实际上是 memory/disk-based,而不是基于网络的。
如果你仔细想想,这是有道理的;在您知道所有数据下载正常之前,您不应该成功解决承诺。
我们正在开发一个基于 Guzzle 6 的 PHP 客户端,用于响应时间合理的情况。
Guzzle 可以做到 async requests via curl 那 return 一个承诺 API。因为 body 可以作为流检索,所以我想知道承诺是否已解决(例如通过 wait() 强制执行)
a) 何时收到最后一个 header(如 on_headers hook)?
b) body 何时完全收到?
我试图在 Guzzle 来源中找到答案,但我惨遭失败。
答案是选项b
如果您使用的是默认的基于 Curl 的调用,则承诺在 curl 调用完成后才会生效。在 CurlHandler 的 __invoke
:
curl_exec($easy->handle);
...
return CurlFactory::finish($this, $easy, $this->factory);
哪个returns:
return new FulfilledPromise($easy->response);
CurlMultiHandler 存在类似的代码。 on_headers
函数中的承诺没有得到解决,所以大概是在主体完成时。我相信这些流实际上是 memory/disk-based,而不是基于网络的。
如果你仔细想想,这是有道理的;在您知道所有数据下载正常之前,您不应该成功解决承诺。