gpt4 book ai didi

php - Guzzle 异步 promise 有什么意义?

转载 作者:IT王子 更新时间:2023-10-29 00:08:19 25 4
gpt4 key购买 nike

对于 Guzzle,promises 是否提供任何实际用途?看来您必须调用 wait()。以下代码(来自文档)本身似乎什么都不做:

$promise = $client->requestAsync('GET', 'http://httpbin.org/get');
$promise->then(
function (ResponseInterface $res) {
echo $res->getStatusCode() . "\n";
},
function (RequestException $e) {
echo $e->getMessage() . "\n";
echo $e->getRequest()->getMethod();
}
);

如果您必须调用 $promise->wait() 来发出请求,那么 promise 有什么意义呢?这真的有什么不同:

$request = new Request('GET', 'http://httpbin.org/get');
$response = $client->send($request);

if ($response

据我所知,唯一的好处是它可以方便地定义请求成功和失败回调。即使是关于发出多个请求的文档部分也有下面的代码,它似乎阻止并执行所有请求......也许是在“同时”。这就是我应该期待的吗?

// Wait on all of the requests to complete.
$results = Promise\unwrap($promises);

最佳答案

我要冒险了,但是从我读到的...

虽然 PHP 不能进行异步处理,但您可以打开多个流并无阻塞地处理它们的输入。所以在你的例子中只有一个连接,是的,没有意义/好处。

但假设您想加载 5 个资源。使用异步方法可以使这些资源基本上并行加载 - 而不是仅在第一个资源加载后才启动第二个资源。

Guzzle 提供了处理用例的方法,例如“在它们全部正确加载之后......”或“在它们全部加载或失败之后......”。

所以我认为它应该在处理可能同时发生的多个请求时实现更快的处理。

关于php - Guzzle 异步 promise 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36143161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com