Я хочу отправить много запросов на сайт и найти идентификатор последнего существующего сообщения. Поскольку мой хост достигает предела количества запросов к этим веб-сайтам после нескольких запросов, я ожидаю, что запрос curl вернет ошибку, чтобы я мог сохранить идентификатор последнего сообщения в своей базе данных и продолжить прокрутку позже. Но после примерно 200 успешных запросов curl не возвращает ни ответа, ни http-кода. Для уточнения c Я хочу получать сообщения канала телеграммы от идентификатора до конца. Вот функция, которую я написал для этой цели:
function get_post_html_content($channel_username, $message_id){
try {
error_log($message_id."\n");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,
"https://t.me/".$channel_username."/".$message_id."?embed=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$headers = array();
$headers[] = 'Pragma: no-cache';
$headers[] = 'Sec-Fetch-Site: same-origin';
$headers[] = 'Origin: https://t.me';
$headers[] = 'Accept-Encoding: gzip,deflate';
$headers[] = 'Accept-Language: en-US,en;q=0.9';
$headers[] = 'Sec-Fetch-Mode: cors';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
$headers[] = 'Accept: */*';
$headers[] = 'Cache-Control: no-cache';
$headers[] = 'Referrer Policy: no-referrer-when-downgrade';
$headers[] = 'Connection: keep-alive';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$content = curl_exec($ch);
if (!$content) {
$errno = curl_errno($ch);
$error = curl_error($ch);
error_log("Curl returned error $errno: $error\n");
curl_close($ch);
return false;
}
$http_code = intval(curl_getinfo($ch, CURLINFO_HTTP_CODE));
error_log("http code: ".$http_code."\n");
} catch (Exception $e) {
error_log($e->getMessage());
}
$content = gzdecode($content);
curl_close($ch);
return $content;
}
Проблема заключается в том, что через несколько раз http-код 200 печатается в файле журнала ошибок, и эта функция возвращает содержимое. Внезапно он не печатает ничего http код в журнале ошибок и даже не возвращает false, чтобы я мог сохранить последний пост ID в базе данных. Так как же мне изменить эту функцию, чтобы она возвращала ложь в этой ситуации?