私はこのような同時要求を送信するためにがつがつ食う6を使用しています:グーグルを使用してタイムアウト制限付きの同時リクエストを送信するにはどうすればよいですか?
public function sendConcurrentRequests() {
$client = new Client(['timeout' => 5]);
$promises[] = $client->getAsync('http://example.com/1');
$promises[] = $client->getAsync('http://example.com/2');
$promises[] = $client->getAsync('http://example.com/3');
$results = Promise\unwrap($promises);
return $results;
}
各要求は、1から10秒にどこでも取ることができるが、私は要求のいずれかが5秒以上待ちたくありません(そのため、私はタイムアウトを設定しています)。私は起こるだろう願っています、このです:
- 要求1、2及び3は、要求がキャンセルされるように要求2は、5秒以上かかり
- 開始され、リクエスト1および3からの応答、その「2をリクエスト3秒以上かかりますので、アンラップ機能が
ConnectException
をスローし、私ができる - を - 1、2と3をリクエスト を開始している:時間に、
を返される。これは、実際に何が起こっているかで答えましたリクエスト1とリクエスト3からの応答を取得します。
時間内に返されたリクエストから有効な回答を得るために、この作業を行うにはどうすればよいですか?
別の例との相違点の説明を探している人のために:http://docs.guzzlephp.org/en/latest/quickstart.html?highlight=promise#concurrent-requests –
この機能は、質問が投稿されたので、私はそれをドキュメントに追加しました:D https://github.com/guzzle/guzzle/commit/812f3a83e5de84a089369ce07452fa9d45d2dd1d – kenske