1
私はマルチカール行うこと、機能を持っている:私は理論的には、要求の多くを行うことができます。このように約500件以上のリクエストを送信すると、マルチカールが空のオブジェクトを返すのはなぜですか?
//$ID = array of identificators
function getLotInfo($ID)
{
$info = array();
$multi = curl_multi_init();
$channels = array();
foreach ($ID as $id) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://skylots.org/lot/$id");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies/cookie.txt');
curl_multi_add_handle($multi, $ch);
$channels[$id] = $ch;
}
$active = null;
do {
$mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($multi) == -1) {
continue;
}
do {
$mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
$datas = array();
foreach ($channels as $channel) {
$datas[] = curl_multi_getcontent($channel);
curl_multi_remove_handle($multi, $channel);
}
curl_multi_close($multi);
}
を、しかしidentificatorsの数が約500、より、
ときなぜこの邪魔になるのですか?どうすれば修正できますか?
しかし、500件を超えるリクエストの後にリクエストを減らすと、私はコンテンツを取得します。したがって、私はこれがファイアウォールではないと思うが、間違っている可能性がある。 この関数は、1回の繰り返しで<500リクエストのサイクルのように動作させることができますが、それは正しくなりますか? –
@ S.Vladimirはおそらくサーバーリソースのためです。彼らはそのような多くの要求を処理することはできません。 – Beaumind