Обработка кодов состояния 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.

В примере мы выводим код ошибки на экран, чтобы знать наверняка, какой код нам был возвращен. А также для примера было добавлено условие к дальнейшим действиям.

Данный пример Вы также можете скачать из вложения в конце статьи.

Комментарии

Здесь еще никто не оставлял комментарии.

Добавить комментарий