Insolita
@Insolita
Отчаянная домохозяйка

Guzzle 6 Pool — как получить все результаты?

как получить массив ответов из пула
$results=[];
$requests=[0=>new Request($url1),1=>new Request($url2),2=>new Request($url3)];
$pool = new Pool($client, $requests, [
    'concurrency' => 5,
    'fulfilled' => function ($response, $index) use($requests, $results) {
        echo $index.' - '.$requests[$index]->getUri()->__toString().' --'. $response->getStatusCode().PHP_EOL;
         $results[$index]=$response;
         return $response;
    },
    'rejected' => function ($reason, $index)use($requests, $results)  {
         echo $index.' - '.$requests[$index]->getUri()->__toString().' --'. $reason.PHP_EOL;
         $results[$index]=$reason;
        return $reason;
    },
]);

// Initiate the transfers and create a promise
$promise = $pool->promise();
// Force the pool of requests to complete.
$promise->wait();
var_dump($results);  // Пусто :-(

То что в echo выводится норм
Как получить результаты то?
  • Вопрос задан
  • 982 просмотра
Решения вопроса 1
Insolita
@Insolita Автор вопроса
Отчаянная домохозяйка
Получилось ... надо было результат по ссылке брать
$pool = new Pool($client, $requests, [
    'concurrency' => 5,
    'fulfilled' => function ($response, $index) use($requests, &$results) {
        echo $index.' - '.$requests[$index]->getUri()->__toString().' --'. $response->getStatusCode().PHP_EOL;
         $results[$index]=$response;
    },
    'rejected' => function ($reason, $index)use($requests, &$results)  {
         echo $index.' - '.$requests[$index]->getUri()->__toString().' --'. $reason.PHP_EOL;
         $results[$index]=$reason;
    },
]);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы