を送信する前に、完成したバッチを待って、同時リクエストをがつがつ食う:私はこの次のコードはこのように動作するだろうと思った次の
CONCURRENT_REQUESTS
の数のバッチが、それはこれらの要求のすべてになるまで待っている- を送っています上記の番号の次のバッチが
ではなくrealitで
usleep(...)
]をコメントすると、要求バッチはできるだけ速くサーバーに何千ものクエリを生成しているようです。 変更することはできますか?この動作を変更するにはどうすればよいですか? <?php
$pool = $this->getPool();
if (false !== $pool) {
$pool->promise()->wait();
}
private function getPool()
{
$requests = function ($data) {
foreach ($data as $index => $datum) {
yield $this->patch($datum)->then(function (
$response
) use ($index) {
usleep(SLEEP_TIME_IN_SECONDS *1000000);
return [
'response' => $response,
'index' => $index
];
});
}
};
return new EachPromise($requests($data), [
'concurrency' => CONCURRENT_REQUESTS,
'fulfilled' => function ($response, $index) use ($data) {
// log
},
'rejected' => function ($reason, $index) use ($data) {
// do stuff
}
]);
}
private function patch($data)
{
$request = new Request(REQUEST_TYPE_PATCH, $url, $this->getPatchHeaders());
return $this->client->sendAsync($request);
}
本当にCurlMultiハンドラを使用していますか? cURLをインストールして有効にしていますか? StreamHandlerでは動作しません。 –