我正在嘗試向端點發(fā)送請求,但我不想等待他們響應(yīng),因為我不需要響應(yīng)。所以我正在使用 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();AI 理解,我必須調(diào)用 上的wait方法client才能實際發(fā)送請求。但這完全否定了“異步”請求,因為如果 url 不可訪問或服務(wù)器關(guān)閉,應(yīng)用程序?qū)⒌却瑫r或任何其他錯誤。所以,這里的問題是,當(dāng)您無論如何都必須等待響應(yīng)時,Guzzle 所說的“異步”是什么意思?以及如何使用 PHP 調(diào)用真正的異步請求?
3 回答

Qyouu
TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊
then()如果您不想等待結(jié)果,請調(diào)用方法:
$client = new GuzzleClient();
$promise = $client->getAsync($url)
$promise->then();
Empty then()call 會在不等待結(jié)果的情況下發(fā)出 HTTP 請求,非常類似于
curl_setopt(CURLOPT_RETURNTRANSFER,false)

青春有我
TA貢獻(xiàn)1784條經(jīng)驗 獲得超8個贊
use Illuminate\Support\Facades\Http;
...Some Code here
$prom = Http::timeout(1)->async()->post($URL_STRING, $ARRAY_DATA)->wait();
... Some more important code here
return "Request sent"; //OR whatever you need to return
這對我有用,因為我不需要總是知道響應(yīng)。它仍然使用,wait()但由于超時值很小,它并沒有真正等待響應(yīng)。
希望這對其他人有幫助。
添加回答
舉報
0/150
提交
取消