UmbrellaCoders
@UmbrellaCoders
PHP, JS Developer

Guzzle 6 Pool: sink и имя файла в fulfilled, как получить?

Прошу помощи с guzzle.

Есть следующий код

$requests = function ($total) use ($client) {
            foreach($this->downloadLinks as $key => $link) {

                preg_match('/([0-9]*)\.mp4/', $link, $matches);
                $resource = getcwd().'/videos/'.$this->downloadPath.'/'.$matches[0];

                yield function () use ($client, $link, $resource) {
                    return $client->getAsync($link, [
                        'sink' => $resource,
                        'proxy' => 'tcp://'.$this->proxies[ mt_rand(0, count($this->proxies)-1)]
                    ]);
                };
            }
        };





        $pool = new Pool($this->browser, $requests(count($requests)), [
            'concurrency' => $concurrency,
            'fulfilled' => function ($response, $index) {
               
               как тут получить имя скачанного фала?

            },
            'rejected' => function ($reason, $index) {
              echo 'rejcted';
            },
        ]);

        $promise = $pool->promise();
        $promise->wait();


Файлы скачивает как положено, но как в fulfilled получить имя скачанного файла?

никак не могу разобраться.

Спасибо!
  • Вопрос задан
  • 455 просмотров
Решения вопроса 1
UmbrellaCoders
@UmbrellaCoders Автор вопроса
PHP, JS Developer
Сделал через middlewears docs.guzzlephp.org/en/latest/handlers-and-middlewa...

Добавил нужные данные в Response и уже в fulfilled получил их $request->getHeader('custom_header');
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Либо в yield добавлять идентификатор если нужно получать какое-то своё что-то.

Либо repsonse смотреть, там же должны быть все хедеры и и д.
Ответ написан
@pbabkin
все просто, оказывается:
...
$requests = function ($batch) {
    foreach ($batch as $key => $url) {
        yield  $key => new Request('GET', $url);
    }
};
...


нашлось тут
актуально и для текущей 7 версии guzzle
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽