curl_getinfo
Если задана option , возвращает ее значение. В противном случае возвращает ассоциативный массив со следующими элементами (которые соответствуют option ) или false в случае ошибки:
- «url»
- «content_type»
- «http_code»
- «header_size»
- «request_size»
- «filetime»
- «ssl_verify_result»
- «redirect_count»
- «total_time»
- «namelookup_time»
- «connect_time»
- «pretransfer_time»
- «size_upload»
- «size_download»
- «speed_download»
- «speed_upload»
- «download_content_length»
- «upload_content_length»
- «starttransfer_time»
- «redirect_time»
- «certinfo»
- «primary_ip»
- «primary_port»
- «local_ip»
- «local_port»
- «redirect_url»
- «request_header» (устанавливается, только если CURLINFO_HEADER_OUT установлен предыдущим вызовом curl_setopt () )
Changelog
Version | Description |
---|---|
8.0.0 | handle теперь ожидает экземпляр CurlHandle ; ранее ресурс ожидался. |
8.0.0 | option теперь обнуляется; ранее значение по умолчанию было 0 . |
7.3.0 | Введенный CURLINFO_CONTENT_LENGTH_DOWNLOAD_T , CURLINFO_CONTENT_LENGTH_UPLOAD_T , CURLINFO_HTTP_VERSION , CURLINFO_PROTOCOL , CURLINFO_PROXY_SSL_VERIFYRESULT , CURLINFO_SCHEME , CURLINFO_SIZE_DOWNLOAD_T , CURLINFO_SIZE_UPLOAD_T , CURLINFO_SPEED_DOWNLOAD_T , CURLINFO_SPEED_UPLOAD_T , CURLINFO_APPCONNECT_TIME_T , CURLINFO_CONNECT_TIME_T , CURLINFO_FILETIME_T , CURLINFO_NAMELOOKUP_TIME_T , CURLINFO_PRETRANSFER_TIME_T , CURLINFO_REDIRECT_TIME_T , CURLINFO_STARTTRANSFER_TIME_T , CURLINFO_TOTAL_TIME_T . |
Examples
Пример # 1 curl_getinfo () Пример
// Create a cURL handle $ch = curl_init('http://www.example.com/'); // Execute curl_exec($ch); // Check if any error occurred if (!curl_errno($ch)) < $info = curl_getinfo($ch); echo 'Took ', $info['total_time'], ' seconds to send a request to ', $info['url'], "\n"; > // Close handle curl_close($ch); ?>
Пример # 2 Пример использования curl_getinfo () с параметром option
// Create a cURL handle $ch = curl_init('http://www.example.com/'); // Execute curl_exec($ch); // Check HTTP status code if (!curl_errno($ch)) < switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) < case 200: # OK break; default: echo 'Unexpected HTTP code: ', $http_code, "\n"; > > // Close handle curl_close($ch); ?>
Notes
Note:
Информация,собранная этой функцией,сохраняется при повторном использовании рукоятки.Это означает,что если только внутренняя статистика не переопределена этой функцией,возвращается предыдущая информация.
PHP 8.2
(PHP 5 5.5.0,7,8)curl_file_create CURLFile object Эта функция является псевдонимом:CURLFile::__construct()
(PHP 4 4.0.2,5,7,8)curl_init Инициализация сессии Инициализирует новую сессию и возвращает хэндл cURL для использования с curl_setopt(),curl_exec(),curl_close().
(PHP 5,7,8)curl_multi_add_handle normal to Добавляет хэндл к multi multi_handle Хэндл cURL multi,возвращаемый curl_multi_init().
curl_getinfo
// Check HTTP status code
if (! curl_errno ( $ch )) switch ( $http_code = curl_getinfo ( $ch , CURLINFO_HTTP_CODE )) case 200 : # OK
break;
default:
echo ‘Unexpected HTTP code: ‘ , $http_code , «\n» ;
>
>
// Close handle
curl_close ( $ch );
?>
Notes
Note:
Information gathered by this function is kept if the handle is re-used. This means that unless a statistic is overridden internally by this function, the previous info is returned.
User Contributed Notes 13 notes
Here are the response codes ready for pasting in an ini-style file. Can be used to provide more descriptive message, corresponding to ‘http_code’ index of the arrray returned by curl_getinfo().
These are taken from the W3 consortium HTTP/1.1: Status Code Definitions, found at
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
101=»Switching Protocols» [Successful 2xx]200=»OK»
201=»Created»
202=»Accepted»
203=»Non-Authoritative Information»
204=»No Content»
205=»Reset Content»
206=»Partial Content» [Redirection 3xx]300=»Multiple Choices»
301=»Moved Permanently»
302=»Found»
303=»See Other»
304=»Not Modified»
305=»Use Proxy»
306=»(Unused)»
307=»Temporary Redirect» [Client Error 4xx]400=»Bad Request»
401=»Unauthorized»
402=»Payment Required»
403=»Forbidden»
404=»Not Found»
405=»Method Not Allowed»
406=»Not Acceptable»
407=»Proxy Authentication Required»
408=»Request Timeout»
409=»Conflict»
410=»Gone»
411=»Length Required»
412=»Precondition Failed»
413=»Request Entity Too Large»
414=»Request-URI Too Long»
415=»Unsupported Media Type»
416=»Requested Range Not Satisfiable»
417=»Expectation Failed» [Server Error 5xx]500=»Internal Server Error»
501=»Not Implemented»
502=»Bad Gateway»
503=»Service Unavailable»
504=»Gateway Timeout»
505=»HTTP Version Not Supported»
And an example usage:
$ch = curl_init (); // create cURL handle (ch)
if (! $ch ) die( «Couldn’t initialize a cURL handle» );
>
// set some cURL options
$ret = curl_setopt ( $ch , CURLOPT_URL , «http://mail.yahoo.com» );
$ret = curl_setopt ( $ch , CURLOPT_HEADER , 1 );
$ret = curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION , 1 );
$ret = curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 0 );
$ret = curl_setopt ( $ch , CURLOPT_TIMEOUT , 30 );
// execute
$ret = curl_exec ( $ch );
if (empty( $ret )) // some kind of an error happened
die( curl_error ( $ch ));
curl_close ( $ch ); // close cURL handler
> else $info = curl_getinfo ( $ch );
curl_close ( $ch ); // close cURL handler
if (empty( $info [ ‘http_code’ ])) die( «No HTTP code was returned» );
> else // load the HTTP codes
$http_codes = parse_ini_file ( «path/to/the/ini/file/I/pasted/above» );
// echo results
echo «The server responded:
» ;
echo $info [ ‘http_code’ ] . » » . $http_codes [ $info [ ‘http_code’ ]];
>
Получаем HTTP статус-коды сайта с помощью PHP и CURL
Используя нижеприведенный код вы сможете проверить, существует сайт или нет. Также можно проверить, есть ли на сайте редирект. Это может быть полезно для сайтов-каталогов, которые хотите проверить урлы, которые больше не являются активными или обновить свои ссылки. С помощью CURL мы получаем все статус коды для какого либо сайта, а затем ищем совпадения со списком HTTP статус-кодов.
$toCheckURL = «http://google.com» ; // Домен для проверки
curl_setopt( $ch , CURLOPT_URL, $toCheckURL );
curl_setopt( $ch , CURLOPT_HEADER, true);
curl_setopt( $ch , CURLOPT_NOBODY, true);
curl_setopt( $ch , CURLOPT_RETURNTRANSFER, true);
curl_setopt( $ch , CURLOPT_FOLLOWLOCATION, true);
curl_setopt( $ch , CURLOPT_MAXREDIRS, 10); // разрешаем только 10 редиректов за раз во избежание бесконечного цикла
$http_code = curl_getinfo( $ch , CURLINFO_HTTP_CODE); // Получаем HTTP-код
$new_url = curl_getinfo( $ch , CURLINFO_EFFECTIVE_URL);
// Массив возможных HTTP статус кодовв
$codes = array (0=> ‘Domain Not Found’ ,
203=> ‘Non-Authoritative Information’ ,
407=> ‘Proxy Authentication Required’ ,
413=> ‘Request Entity Too Large’ ,
415=> ‘Unsupported Media Type’ ,
416=> ‘Requested Range Not Satisfiable’ ,
500=> ‘Internal Server Error’ ,
505=> ‘HTTP Version Not Supported’ );
// Ищем совпадения с нашим списком
if (isset( $codes [ $http_code ]))
echo ‘Сайт вернул ответ: ‘ . $http_code . ‘ — ‘ . $codes [ $http_code ]. ‘
‘ ;
preg_match_all( «/HTTP/1.[1|0]s(d)/» , $data , $matches );
// Идем дальше по списку, чтобы посмотреть, какие мы еще статус коды получили
// Проверяем если урл поменялся или нет
curl_getinfo
If option is given, returns its value. Otherwise, returns an associative array with the following elements (which correspond to option ), or false on failure:
- «url»
- «content_type»
- «http_code»
- «header_size»
- «request_size»
- «filetime»
- «ssl_verify_result»
- «redirect_count»
- «total_time»
- «namelookup_time»
- «connect_time»
- «pretransfer_time»
- «size_upload»
- «size_download»
- «speed_download»
- «speed_upload»
- «download_content_length»
- «upload_content_length»
- «starttransfer_time»
- «redirect_time»
- «certinfo»
- «primary_ip»
- «primary_port»
- «local_ip»
- «local_port»
- «redirect_url»
- «request_header» (This is only set if the CURLINFO_HEADER_OUT is set by a previous call to curl_setopt())
Changelog
Version | Description |
---|---|
8.0.0 | handle expects a CurlHandle instance now; previously, a resource was expected. |
8.0.0 | option is nullable now; previously, the default was 0 . |
7.3.0 | Introduced CURLINFO_CONTENT_LENGTH_DOWNLOAD_T , CURLINFO_CONTENT_LENGTH_UPLOAD_T , CURLINFO_HTTP_VERSION , CURLINFO_PROTOCOL , CURLINFO_PROXY_SSL_VERIFYRESULT , CURLINFO_SCHEME , CURLINFO_SIZE_DOWNLOAD_T , CURLINFO_SIZE_UPLOAD_T , CURLINFO_SPEED_DOWNLOAD_T , CURLINFO_SPEED_UPLOAD_T , CURLINFO_APPCONNECT_TIME_T , CURLINFO_CONNECT_TIME_T , CURLINFO_FILETIME_T , CURLINFO_NAMELOOKUP_TIME_T , CURLINFO_PRETRANSFER_TIME_T , CURLINFO_REDIRECT_TIME_T , CURLINFO_STARTTRANSFER_TIME_T , CURLINFO_TOTAL_TIME_T . |
Examples
Example #1 curl_getinfo() example
// Create a cURL handle $ch = curl_init('http://www.example.com/'); // Execute curl_exec($ch); // Check if any error occurred if (!curl_errno($ch)) < $info = curl_getinfo($ch); echo 'Took ', $info['total_time'], ' seconds to send a request to ', $info['url'], "\n"; > // Close handle curl_close($ch); ?>
Example #2 curl_getinfo() example with option parameter
// Create a cURL handle $ch = curl_init('http://www.example.com/'); // Execute curl_exec($ch); // Check HTTP status code if (!curl_errno($ch)) < switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) < case 200: # OK break; default: echo 'Unexpected HTTP code: ', $http_code, "\n"; > > // Close handle curl_close($ch); ?>
Notes
Note:
Information gathered by this function is kept if the handle is re-used. This means that unless a statistic is overridden internally by this function, the previous info is returned.
PHP 8.2
(PHP 5 5.5.0, 7, 8) curl_file_create CURLFile object This function an alias of: CURLFile::__construct()
(PHP 4 4.0.2, 5, 7, 8) curl_init Initialize session Initializes new session and return cURL handle for use with the curl_setopt(), curl_exec(), curl_close()
(PHP 5, 7, 8) curl_multi_add_handle normal to Adds the handle to multi multi_handle A cURL multi handle returned by curl_multi_init().