Задать вопрос
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 выводится норм
Как получить результаты то?
  • Вопрос задан
  • 995 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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;
    },
]);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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