curl_getinfo
Description
The curl_getinfo of cURL for PHP get information regarding a specific transfer.
Syntax
curl_getinfo( CurlHandle $handle, ?int $option = null ): mixed
Parameters
handle
A cURL handle returned by curl_init().
option
This may be one of the following constants:
Constant | Description |
---|---|
CURLINFO_EFFECTIVE_URL | Last effective URL |
CURLINFO_HTTP_CODE | The last response code. This is a legacy alias of CURLINFO_RESPONSE_CODE |
CURLINFO_FILETIME | Remote time of the retrieved document, with the CURLOPT_FILETIME enabled; if -1 is returned the time of the document is unknown |
CURLINFO_TOTAL_TIME | Total transaction time in seconds for last transfer |
CURLINFO_NAMELOOKUP_TIME | Time in seconds until name resolving was complete |
CURLINFO_CONNECT_TIME | Time in seconds it took to establish the connection |
CURLINFO_PRETRANSFER_TIME | Time in seconds from start until just before file transfer begins |
CURLINFO_STARTTRANSFER_TIME | Time in seconds until the first byte is about to be transferred |
CURLINFO_REDIRECT_COUNT | Number of redirects, with the CURLOPT_FOLLOWLOCATION option enabled |
CURLINFO_REDIRECT_TIME | Time in seconds of all redirection steps before final transaction was started, with the CURLOPT_FOLLOWLOCATION option enabled |
CURLINFO_REDIRECT_URL | With the CURLOPT_FOLLOWLOCATION option disabled: redirect URL found in the last transaction, that should be requested manually next. With the CURLOPT_FOLLOWLOCATION option enabled: this is empty. The redirect URL in this case is available in CURLINFO_EFFECTIVE_URL |
CURLINFO_PRIMARY_IP | IP address of the most recent connection |
CURLINFO_PRIMARY_PORT | Destination port of the most recent connection |
CURLINFO_LOCAL_IP | Local (source) IP address of the most recent connection |
CURLINFO_LOCAL_PORT | Local (source) port of the most recent connection |
CURLINFO_SIZE_UPLOAD | Total number of bytes uploaded |
CURLINFO_SIZE_DOWNLOAD | Total number of bytes downloaded |
CURLINFO_SPEED_DOWNLOAD | Average download speed |
CURLINFO_SPEED_UPLOAD | Average upload speed |
CURLINFO_HEADER_SIZE | Total size of all headers received |
CURLINFO_HEADER_OUT | The request string sent. For this to work, add the CURLINFO_HEADER_OUT option to the handle by calling curl_setopt() |
CURLINFO_REQUEST_SIZE | Total size of issued requests, currently only for HTTP requests |
CURLINFO_SSL_VERIFYRESULT | Result of SSL certification verification requested by setting CURLOPT_SSL_VERIFYPEER |
CURLINFO_CONTENT_LENGTH_DOWNLOAD | Content length of download, read from Content-Length: field |
CURLINFO_CONTENT_LENGTH_UPLOAD | Specified size of upload |
CURLINFO_CONTENT_TYPE | Content-Type: of the requested document. NULL indicates server did not send valid Content-Type: header |
CURLINFO_PRIVATE | Private data associated with this cURL handle, previously set with the CURLOPT_PRIVATE option of curl_setopt() |
CURLINFO_RESPONSE_CODE | The last response code |
CURLINFO_HTTP_CONNECTCODE | The CONNECT response code |
CURLINFO_HTTPAUTH_AVAIL | Bitmask indicating the authentication method(s) available according to the previous response |
CURLINFO_PROXYAUTH_AVAIL | Bitmask indicating the proxy authentication method(s) available according to the previous response |
CURLINFO_OS_ERRNO | Errno from a connect failure. The number is OS and system specific. |
CURLINFO_NUM_CONNECTS | Number of connections curl had to create to achieve the previous transfer |
CURLINFO_SSL_ENGINES | OpenSSL crypto-engines supported |
CURLINFO_COOKIELIST | All known cookies |
CURLINFO_FTP_ENTRY_PATH | Entry path in FTP server |
CURLINFO_APPCONNECT_TIME | Time in seconds it took from the start until the SSL/SSH connect/handshake to the remote host was completed |
CURLINFO_CERTINFO | TLS certificate chain |
CURLINFO_CONDITION_UNMET | Info on unmet time conditional |
CURLINFO_RTSP_CLIENT_CSEQ | Next RTSP client CSeq |
CURLINFO_RTSP_CSEQ_RECV | Recently received CSeq |
CURLINFO_RTSP_SERVER_CSEQ | Next RTSP server CSeq |
CURLINFO_RTSP_SESSION_ID | RTSP session ID |
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T | The content-length of the download. This is the value read from the Content-Type: field. -1 if the size isn't known |
CURLINFO_CONTENT_LENGTH_UPLOAD_T | The specified size of the upload. -1 if the size isn't known |
CURLINFO_HTTP_VERSION | The version used in the last HTTP connection. The return value will be one of the defined CURL_HTTP_VERSION_* constants or 0 if the version can't be determined |
CURLINFO_PROTOCOL | The protocol used in the last HTTP connection. The returned value will be exactly one of the CURLPROTO_* values |
CURLINFO_PROXY_SSL_VERIFYRESULT | The result of the certificate verification that was requested (using the CURLOPT_PROXY_SSL_VERIFYPEER option). Only used for HTTPS proxies |
CURLINFO_SCHEME | The URL scheme used for the most recent connection |
CURLINFO_SIZE_DOWNLOAD_T | Total number of bytes that were downloaded. The number is only for the latest transfer and will be reset again for each new transfer |
CURLINFO_SIZE_UPLOAD_T | Total number of bytes that were uploaded |
CURLINFO_SPEED_DOWNLOAD_T | The average download speed in bytes/second that curl measured for the complete download |
CURLINFO_SPEED_UPLOAD_T | The average upload speed in bytes/second that curl measured for the complete upload |
CURLINFO_APPCONNECT_TIME_T | Time, in microseconds, it took from the start until the SSL/SSH connect/handshake to the remote host was completed |
CURLINFO_CONNECT_TIME_T | Total time taken, in microseconds, from the start until the connection to the remote host (or proxy) was completed |
CURLINFO_FILETIME_T | Remote time of the retrieved document (as Unix timestamp), an alternative to CURLINFO_FILETIME to allow systems with 32 bit long variables to extract dates outside of the 32bit timestamp range |
CURLINFO_NAMELOOKUP_TIME_T | Time in microseconds from the start until the name resolving was completed |
CURLINFO_PRETRANSFER_TIME_T | Time taken from the start until the file transfer is just about to begin, in microseconds |
CURLINFO_REDIRECT_TIME_T | Total time, in microseconds, it took for all redirection steps include name lookup, connect, pretransfer and transfer before final transaction was started |
CURLINFO_STARTTRANSFER_TIME_T | Time, in microseconds, it took from the start until the first byte is received |
CURLINFO_TOTAL_TIME_T | Total time in microseconds for the previous transfer, including name resolving, TCP connect etc. |
Return
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()) |
Note that private data is not included in the associative array and must be retrieved individually with the CURLINFO_PRIVATE option.
Examples
1 · handle
<? $handle = curl_init(); curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle); print_r($return); curl_close($handle); ?>
Array ( [url] => https://www.php.net/ [content_type] => text/html; charset=utf-8 [http_code] => 200 [header_size] => 597 [request_size] => 48 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 1.01634 [namelookup_time] => 0.080163 [connect_time] => 0.279613 [pretransfer_time] => 0.501838 [size_upload] => 0 [size_download] => 45928 [speed_download] => 45189 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => 0 [starttransfer_time] => 0.91459 [redirect_time] => 0 [redirect_url] => [primary_ip] => 2a02:cb40:200::1ad [certinfo] => Array ( ) [primary_port] => 443 [local_ip] => 2a02:4780:1:1e::8 [local_port] => 34192 [http_version] => 3 [protocol] => 2 [ssl_verifyresult] => 0 [scheme] => HTTPS [appconnect_time_us] => 781156 [connect_time_us] => 279613 [namelookup_time_us] => 80163 [pretransfer_time_us] => 501838 [redirect_time_us] => 0 [starttransfer_time_us] => 914590 [total_time_us] => 1016340 [effective_method] => GET [capath] => [cainfo] => /etc/pki/tls/certs/ca-bundle.crt )
2 · option · CURLINFO_EFFECTIVE_URL
<? $handle = curl_init(); $option = CURLINFO_EFFECTIVE_URL; curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle, $option); print_r($return); curl_close($handle); ?>
https://www.php.net/
3 · option · CURLINFO_HTTP_CODE
<? $handle = curl_init(); $option = CURLINFO_HTTP_CODE; curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle, $option); print_r($return); curl_close($handle); ?>
200
4 · option · CURLINFO_FILETIME
<? $handle = curl_init(); $option = CURLINFO_FILETIME; curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle, $option); print_r($return); curl_close($handle); ?>
-1
5 · option · CURLINFO_TOTAL_TIME
<? $handle = curl_init(); $option = CURLINFO_TOTAL_TIME; curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle, $option); print_r($return); curl_close($handle); ?>
0.937939
6 · option · CURLINFO_NAMELOOKUP_TIME
<? $handle = curl_init(); $option = CURLINFO_NAMELOOKUP_TIME; curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle, $option); print_r($return); curl_close($handle); ?>
0.000265
7 · option · CURLINFO_RESPONSE_CODE
<? $handle = curl_init(); $option = CURLINFO_RESPONSE_CODE; curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle, $option); print_r($return); curl_close($handle); ?>
200
8 · return · url
<? $handle = curl_init(); curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle); echo $return['url']; curl_close($handle); ?>
https://www.php.net/
9 · return · content_type
<? $handle = curl_init(); curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle); echo $return['content_type']; curl_close($handle); ?>
text/html; charset=utf-8
10 · return · http_code
<? $handle = curl_init(); curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle); echo $return['http_code']; curl_close($handle); ?>
200
11 · return · header_size
<? $handle = curl_init(); curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_exec($handle); $return = curl_getinfo($handle); echo $return['header_size']; curl_close($handle); ?>
597
12 · return · request_header
<? $handle = curl_init(); curl_setopt($handle, CURLOPT_URL, "https://www.php.net/"); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($handle, CURLINFO_HEADER_OUT, 1); curl_exec($handle); $return = curl_getinfo($handle); echo $return['request_header']; curl_close($handle); ?>
GET / HTTP/2 Host: www.php.net accept: */*
Links
cURL
- curl_close
- curl_copy_handle
- curl_errno
- curl_error
- curl_escape
- curl_exec
- curl_init
- curl_multi_add_handle
- curl_multi_close
- curl_multi_errno
- curl_multi_exec
- curl_multi_getcontent
- curl_multi_info_read
- curl_multi_init
- curl_multi_remove_handle
- curl_multi_select
- curl_multi_setopt
- curl_multi_strerror
- curl_pause
- curl_reset
- curl_setopt
- curl_setopt_array
- curl_share_close
- curl_share_errno
- curl_share_init
- curl_share_setopt
- curl_share_strerror
- curl_strerror
- curl_unescape
- curl_upkeep
- curl_version