したがって、ノンブロッキングのカールリクエストを作成するためのこの機能があります。これまでにテストしたもの (少量のリクエスト) では問題なく動作します。しかし、数千のリクエスト (おそらく最大 10,000) にスケールアップするには、これが必要です。私の問題は、一度に実行される並列リクエストが多すぎるという問題に遭遇したくないということです。
リクエストをレート制限するために何を提案しますか? 眠い?バッチでのリクエスト? 機能は以下です。
function poly_curl($requests){
$queue = curl_multi_init();
$curl_array = array();
$count = 0;
foreach($requests as $request)
{
$curl_array[$count] = curl_init($request);
curl_setopt($curl_array[$count], CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($queue, $curl_array[$count]);
$count++;
}
$running = NULL;
do {
curl_multi_exec($queue,$running);
} while($running > 0);
$res = array();
$count = 0;
foreach($requests as $request)
{
$res[$count] = curl_multi_getcontent($curl_array[$count]);
$count++;
}
$count = 0;
foreach($requests as $request){
curl_multi_remove_handle($queue, $curl_array[$count]);
$count++;
}
curl_multi_close($queue);
return $res;
}