gpt4 book ai didi

php - 发送 Guzzle 的 "async"请求而不调用 "wait"

转载 作者:行者123 更新时间:2023-12-02 00:18:59 25 4
gpt4 key购买 nike

我正在尝试向端点发送请求,但我不想等待他们响应,因为我不需要响应。所以我正在使用 Guzzle,方法如下:

$url = 'http://example.com';

$client = new \Guzzelhttp\Client();
$promise = $client->postAsync($url, [
'headers' => ['Some headers and authorization'],
'query' => [
'params' => 'params',
]
])->then(function ($result) {
// I don't need the result. So I just leave it here.
});

$promise->wait();

我明白了,我必须在 client 上调用 wait 方法才能真正发送请求。但这完全否定了请求是“异步”的,因为如果 url 不可访问或服务器已关闭,应用程序将等待超时或任何其他错误。

所以,这里的问题是,当您无论如何都必须等待响应时,Guzzle 所说的“异步”是什么意思?我如何使用 PHP 调用真正的异步请求?

谢谢

最佳答案

你可以做的是:

    $url = 'http://example.com';

$client = new \Guzzelhttp\Client();
$promise = $client->postAsync($url, [
'headers' => ['Some headers and authorization'],
'query' => [
'params' => 'params',
]
])->then(function ($result) {
return $result->getStatusCode();
})
->wait();

echo $promise;

您需要将 wait() 作为最后一行调用,以便您获得来自您的 promise 的结果。

在这种情况下,它将只返回状态代码。

正如 Github 中提到的那样,它无法“一劳永逸”,所以我认为您正在努力实现的目标,例如 Vue 或 React 中的完整 promise 将无法按照您希望的方式为您工作.

另一种方法和我个人所做的是在 guzzle 请求上使用 try-catch,因此如果出现 guzzle 错误,那么您将捕获它并抛出异常。

关于php - 发送 Guzzle 的 "async"请求而不调用 "wait",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56145750/

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