PHP get_headers () альтернатива

Мне нужен PHP-скрипт, который читает код ответа HTTP для каждого запроса URL-адреса.

что-то вроде

$headers = get_headers($theURL); return substr($headers[0], 9, 3); 

Проблема заключается в том, что функция get_headers () отключена на уровне сервера, как политика. Так что это не работает.

Вопрос в том, как получить код ответа HTTP для URL?

Если cURL включен, вы можете использовать его для получения всего заголовка или всего лишь кода ответа. Следующий код присваивает код $response_code переменной $response_code :

 $curl = curl_init(); curl_setopt_array( $curl, array( CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => 'http://stackoverflow.com' ) ); curl_exec( $curl ); $response_code = curl_getinfo( $curl, CURLINFO_HTTP_CODE ); curl_close( $curl ); 

Чтобы получить весь заголовок, вы можете отправить запрос HEAD, например:

 $curl = curl_init(); curl_setopt_array( $curl, array( CURLOPT_HEADER => true, CURLOPT_NOBODY => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_URL => 'http://stackoverflow.com' ) ); $headers = explode( "\n", curl_exec( $curl ) ); curl_close( $curl ); 

Используйте HttpRequest, если вы можете: http://de2.php.net/manual/en/class.httprequest.php

 $request = new HttpRequest("http://www.example.com/"); $request->send(); echo $request->getResponseCode(); 

Или сделать это сложно: http://de2.php.net/manual/en/function.fsockopen.php

 $errno = 0; $errstr = ""; $res = fsockopen('www.example.com', 80, $errno, $errstr); $request = "GET / HTTP/1.1\r\n"; $request .= "Host: www.example.com\r\n"; $request .= "Connection: Close\r\n\r\n"; fwrite($res, $request); $head = ""; while(!feof($res)) { $head .= fgets($res); } $firstLine = reset(explode("\n", $head)); $matches = array(); preg_match("/[0-9]{3}/", $firstLine, $matches); var_dump($matches[0]); 

Curl также может быть хорошим вариантом, но лучший вариант – победить вашего администратора;)

Вы можете создавать и читать свои собственные HTTP-запросы с помощью fsockopen и регулярных операций с файлами. Ознакомьтесь с моим предыдущим ответом на эту тему:

Существуют ли другие варианты для клиентов отдыха помимо CURL?