Я отправляю 20 запросов - все в порядке, через минуту пытаюсь отправить еще 20 и мне уже выдает NULL на все запросы просто, после какого-то времени я снова пытаюсь отправить запросы и все в порядке.
spoilerpublic function Request ($data)
{
$url = "http://123.com/in.php?key=" . $APIKey . "&method=" . $method . "......";
$multi = curl_multi_init();
$orders = [];
$arrayNull = [];
foreach ($data as $value)
{
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36",
CURLOPT_TIMEOUT => 50,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false
));
curl_multi_add_handle($multi, $ch);
$orders[] = array(
'url' => $ch,
'Id' => $value
);
}
$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) {
usleep(10000);
}
do {
$mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
foreach ($orders as $order)
{
$result = json_decode(curl_multi_getcontent($order["url"]), true);
file_put_contents(__DIR__ . '/logs/RequestHistory.txt', date('Y-m-d h:i:s') . 'Result: ' . json_encode($result) . ' - Order ID: ' . $order["Id"] . PHP_EOL, FILE_APPEND);
curl_multi_remove_handle($multi, $order["url"]);
// пытался установить sleep(2); но не помогает.
}
curl_multi_close($multi);
}
Почему при регулярной отправке запросов сайт на который я отправляю запросы выдает пустоту? Как решить это?) после 2-3 минут я снова делаю запрос и он возвращает нормальные ответы. Я пытался отправить 100 запросов одним разом - получаю успешные ответы, но через 1 минуту я снова вижу NULL.
p.s. Хочу добавить, что я добавил после CURL вот такой file_get_contents и сервер выдает ответ на file_get_contants, но на curl по прежнему идет пустота!
}
curl_multi_close($multi);
var_dump(file_get_contents('http://123.com/in.php?key=123'));
}