Изменение заголовка для параллельных запросов (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, а не создаю свой собственный запрос (как я делал в другом). Я не совсем уверен в этом. Так что, если кто-то может предоставить дальнейшее понимание, это было бы полезно.