2017-04-18 74 views
0

更改请求选项我有下面的代码:狂饮:池中发电机

$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。

那么我该如何设置池生成器中的代理呢?这不可能吗?

回答

0

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