(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
curl_getinfo — Get information regarding a specific transfer
Gets information about the last transfer.
handle
A cURL handle returned by curl_init().
option
This may be one of the following constants:
Option | Description |
---|---|
CURLINFO_CAINFO
|
Default built-in CA certificate path |
CURLINFO_CAPATH
|
Default built-in CA path string |
CURLINFO_EFFECTIVE_URL
|
Last effective URL |
CURLINFO_HTTP_CODE
|
The last response code. As of cURL 7.10.8, 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_REFERER
|
The referrer header |
CURLINFO_REQUEST_SIZE
|
Total size of issued requests, currently only for HTTP requests |
CURLINFO_RETRY_AFTER
|
The information from the Retry-After: header, or zero if there was no valid header. |
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_PROXY_ERROR
|
The detailed (SOCKS) proxy error code when the most recent transfer returned a CURLE_PROXY error. The returned value will be exactly one of the CURLPX_* values. The error code will be CURLPX_OK if no response code was available. |
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-Length: 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. |
If option
is given, returns its value.
Otherwise, returns an associative array with the following elements
(which correspond to option
), or false
on failure:
CURLINFO_HEADER_OUT
is set by a previous call to curl_setopt())
CURLINFO_PRIVATE
option.
Version | Description |
---|---|
8.3.0 |
Introduced CURLINFO_CAINFO
and CURLINFO_CAPATH .
|
8.2.0 |
Introduced CURLINFO_PROXY_ERROR ,
CURLINFO_REFERER ,
CURLINFO_RETRY_AFTER .
|
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 .
|
Example #1 curl_getinfo() example
<?php
// 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
<?php
// 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);
?>
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.