Жрет параллельные запросы — это запрошенный URL из ответа

Я использовал библиотеку Guzzle, чтобы сделать несколько одновременных запросов. Код для этого:

public function concurrentRequests(array $uri)
{
$client = $this;
$requests = function ($total) use ($client, $uri) {
for ($i = 0; $i < $total; $i++) {
yield function () use ($client, $uri, $i) {
return $client->requestAsync('GET', $uri[$i]);
};
}
};

$pool = Pool::batch($client, $requests(count($uri)), [
'concurrency' => 5,
'fulfilled' => function ($response, $index) {
// this is delivered each successful response
},
'rejected' => function ($reason, $index) {
// this is delivered each failed request
},
]);

return $pool;
}

Я хочу знать, какой запрос принадлежит каждому ответу. Есть ли способ сделать это, перебирая ответы?

0

Решение

Это легко, потому что метод Бассейн :: партия

Возвращает массив, содержащий ответ или исключение в том же порядке, в котором были отправлены запросы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector