Php Guzzle:在池生成器中更改请求选项

Php Guzzle:在池生成器中更改请求选项,php,curl,guzzle,guzzle6,guzzlehttp,Php,Curl,Guzzle,Guzzle6,Guzzlehttp,我有以下代码: $generator = function() use ($headers) { while ($request = array_shift($this->requests)) { yield 'id_' . $request['id'] => new Request('GET', $request['url'], $headers); } } 但是,我想添加一些自定义请求选项,例如代理和自定义超时。据我所知,这些只能在客户端实际发送时设置

我有以下代码:

$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


那么如何在池生成器中设置代理呢?不可能吗?

生成器可以返回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.
        ]);
    }
};

生成器可以返回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.
        ]);
    }
};