Изменение заголовка для параллельных запросов (Guzzle)

Я не могу изменить заголовки запроса при выполнении асинхронных запросов.

$requests = function ($total) {
    $uri = 'https://www.example.com';
    $headers = [
        'User-Agent' => 'testing/1.0',
        'Accept'     => 'application/json',
        'X-Foo'      => ['Bar', 'Baz']
    ];

    for ($i = 0; $i < $total; $i++) {
       yield new Request('GET', $uri, $headers); //Does not work
    }
};

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

Я полагаю, что перепробовал все примеры, представленные в документации, и смог изменить заголовки для всех них, кроме параллельных примеров. Любая помощь будет оценена.

1 ответ

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

$headers = ['User-Agent' => 'Bar'];
$client = new Client(['base_uri' => 'https://www.example.com/']);

$promises = [
    'image' => $client->getAsync('/page1',
        ['User-Agent' => "test"]
    ),
    'png'   => $client->getAsync('/page2'),
];

$results = Promise\unwrap($promises);

$results = Promise\settle($promises)->wait();

Я считаю, что это работает, потому что в этом случае я использую объект Client, а не создаю свой собственный запрос (как я делал в другом). Я не совсем уверен в этом. Так что, если кто-то может предоставить дальнейшее понимание, это было бы полезно.

Другие вопросы по тегам