Обработка кодов состояния HTTP с помощью cURL
Когда Вы пытаетесь получить контент стороннего сайта, может оказаться так, что страница недоступна, доступ к содержимому ограничен, превышено время ожидания и т.д. Как быть в этом случае? Именно для этого и нужна обработка кодов состояния HTTP, которую мы сделаем с помощью cURL.
Как это работает?
Описанный ниже пример — не слишком сложный в понимании и его вполне достаточно, чтобы сделать проверку на код ответа.
<?php
$link = "http://www.google.com/images/icons/ui/doodle_plus/doodle_plus_google_logo_on_grey.gif";
if($curl = curl_init()) {
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_NOBODY, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_MAXREDIRS, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_exec($curl);
$http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
echo "<p>Код страницы: " . $http_code . "</p>";
if($http_code > 0 && $http_code < 400) {
echo "<p>Код страницы удовлетворил условиям, выполняю функцию.</p>";
} else {
echo "<p>Код страницы не удовлетворил условиям, функцию не выполняю.</p>";
}
}
?>
Как и в предыдущих статьях, для примера попробуем проверить ссылку на логотип Google. Как видите, мы дополнительно указываем параметр cURL CURLINFO_HTTP_CODE, который и позволит нам определить код ответа. Важно помнить, данный параметр необходимо указывать после выполнения запроса curl_exec, но перед завершением сеанса curl_close.
В примере мы выводим код ошибки на экран, чтобы знать наверняка, какой код нам был возвращен. А также для примера было добавлено условие к дальнейшим действиям.
Данный пример Вы также можете скачать из вложения в конце статьи.
Комментарии
Здесь еще никто не оставлял комментарии.