(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.