2017-04-18 9 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. 
     ]); 
    } 
}; 
関連する問題