Я использую эту функцию для получения статуса окончательного URL-адреса после некоторых возможных перенаправлений:
function getUrlStatus($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true); // we want headers
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$redirectURL = curl_getinfo($ch, CURLINFO_REDIRECT_URL);
curl_close($ch);
if($httpStatus >= 300 && $httpStatus < 400) {
getUrlStatus($redirectURL);
} else {
return $httpStatus;
}
}
Если первый проверяемый URL-адрес не перенаправлен, он работает нормально и отображает статус, но еслипроверяется перенаправленный URL-адрес (поэтому функция getUrlStatus
вызывается рекурсивно), в результате получается NULL
:
var_dump(getUrlStatus($url)); // NULL
Я выполняю эту проверку для нескольких URL-адресов и всехони имеют статус 307, поэтому все они снова вызывают функцию, поэтому отображается NULL
.Посоветуйте пожалуйста что я делаю не так.Спасибо!