Guzzle: изменение параметров запроса в генераторе пула
У меня есть следующий код:
$generator = function() use ($headers) {
while ($request = array_shift($this->requests)) {
yield 'id_' . $request['id'] => new Request('GET', $request['url'], $headers);
}
}
Однако я хотел бы добавить некоторые пользовательские параметры запроса, такие как прокси-сервер и пользовательское время ожидания. Насколько я знаю, они могут быть установлены только тогда, когда клиент действительно отправляет;
$this->client->send($r, ['proxy' => $proxy, 'connect_timeout' => 10]);
Когда я настраиваю генератор следующим образом:
$r = new Request('GET', $request['url'], $headers);
yield 'id_' . $request['id'] => $this->client->send($r, ['proxy' => $proxy, 'connect_timeout' => 10]);
Код больше не работает, потому что он ожидает RequestInterface.
Так как же вместо этого установить прокси в генераторе пула? Разве это не возможно?
1 ответ
Решение
Генератор может возвращать либо RequestInterface, либо PromiseInterface.
Таким образом, вы можете выполнить "полный" запрос, просто сделайте его асинхронно, чтобы сразу получить обещание и передать его в пул.
$generator = function () use ($hreaders) {
while ($request = array_shift($this->requests)) {
yield 'id_' . $request['id'] => $this->client->sendAsync('GET', $request['url'], [
// Your options here.
]);
}
};