Различные методы получения кода ответа HTTP в PHP с использованием cURL

При работе с PHP и cURL важно знать, как получить код ответа HTTP из запроса. Код ответа HTTP предоставляет ценную информацию о состоянии запроса, например, был ли он успешным или возникла ошибка. В этой статье мы рассмотрим несколько методов извлечения кода ответа HTTP с использованием cURL в PHP, а также примеры кода для каждого подхода.

Метод 1: использование функции curl_getinfo
Функция curl_getinfoпозволяет нам получать различную информацию о передаче cURL, включая код ответа HTTP. Вот пример:

$url = 'https://example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Response Code: " . $httpCode;

Метод 2: используя параметр CURLOPT_HEADERFUNCTION
С помощью параметра CURLOPT_HEADERFUNCTIONмы можем определить функцию обратного вызова, которая получает заголовки ответа. Используя этот метод, мы можем извлечь код ответа HTTP из заголовков. Вот пример:

$url = 'https://example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = [];
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
    function($curl, $header) use (&$headers) {
        $headers[] = $header;
        return strlen($header);
    }
);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Response Code: " . $httpCode;

Метод 3: использование параметра CURLOPT_WRITEHEADER
Опция CURLOPT_WRITEHEADERпозволяет нам указать файл, в который будут записываться заголовки ответов. Затем мы можем проанализировать файл и извлечь код ответа HTTP. Вот пример:

$url = 'https://example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headersFile = fopen('headers.txt', 'w');
curl_setopt($ch, CURLOPT_WRITEHEADER, $headersFile);
$response = curl_exec($ch);
fclose($headersFile);
$headers = file('headers.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$httpCode = null;
foreach ($headers as $header) {
    if (preg_match('/HTTP\/\d.\d (\d+)/', $header, $matches)) {
        $httpCode = $matches[1];
        break;
    }
}
echo "HTTP Response Code: " . $httpCode;

Получение кода ответа HTTP имеет решающее значение для понимания результата запроса, выполненного с использованием cURL в PHP. В этой статье мы рассмотрели три метода извлечения кода ответа HTTP: использование функции curl_getinfo, параметра CURLOPT_HEADERFUNCTIONи параметра CURLOPT_WRITEHEADER. Каждый метод предоставляет способ получения кода ответа, что позволяет разработчикам эффективно обрабатывать запросы и предпринимать соответствующие действия на основе полученного кода.

Освоив эти методы, разработчики PHP смогут создавать надежные приложения, способные обрабатывать различные сценарии и обеспечивать лучший пользовательский опыт.

Не забудьте выбрать метод, который лучше всего соответствует вашим конкретным требованиям и стилю кодирования.