Guzzle:更改池生成器中的请求选项
Guzzle: Changing request options in a pool generator
我有以下代码:
$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。
那么我该如何在池生成器中设置代理呢?不可能吗?
生成器可以 return RequestInterface 或 PromiseInterface。
因此您可以执行 "full" 请求,只需异步执行即可立即获得承诺并将其交给池。
$generator = function () use ($hreaders) {
while ($request = array_shift($this->requests)) {
yield 'id_' . $request['id'] => $this->client->sendAsync('GET', $request['url'], [
// Your options here.
]);
}
};
我有以下代码:
$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。
那么我该如何在池生成器中设置代理呢?不可能吗?
生成器可以 return RequestInterface 或 PromiseInterface。
因此您可以执行 "full" 请求,只需异步执行即可立即获得承诺并将其交给池。
$generator = function () use ($hreaders) {
while ($request = array_shift($this->requests)) {
yield 'id_' . $request['id'] => $this->client->sendAsync('GET', $request['url'], [
// Your options here.
]);
}
};