curl_getinfo
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
curl_getinfo — Get information regarding a specific transfer
Description
Gets information about the last transfer.
Parameters
-
handle
-
A cURL handle returned by curl_init().
-
option
-
This may be one of the following constants:
-
CURLINFO_EFFECTIVE_URL
- Last effective URL -
CURLINFO_HTTP_CODE
- The last response code. As of cURL 7.10.8, this is a legacy alias ofCURLINFO_RESPONSE_CODE
-
CURLINFO_FILETIME
- Remote time of the retrieved document, with theCURLOPT_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 theCURLOPT_FOLLOWLOCATION
option enabled -
CURLINFO_REDIRECT_TIME
- Time in seconds of all redirection steps before final transaction was started, with theCURLOPT_FOLLOWLOCATION
option enabled -
CURLINFO_REDIRECT_URL
- With theCURLOPT_FOLLOWLOCATION
option disabled: redirect URL found in the last transaction, that should be requested manually next. With theCURLOPT_FOLLOWLOCATION
option enabled: this is empty. The redirect URL in this case is available inCURLINFO_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 theCURLINFO_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 settingCURLOPT_SSL_VERIFYPEER
-
CURLINFO_CONTENT_LENGTH_DOWNLOAD
- Content length of download, read fromContent-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 validContent-Type:
header -
CURLINFO_PRIVATE
- Private data associated with this cURL handle, previously set with theCURLOPT_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 theContent-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 definedCURL_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 theCURLPROTO_*
values -
CURLINFO_PROXY_SSL_VERIFYRESULT
- The result of the certificate verification that was requested (using theCURLOPT_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 toCURLINFO_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 Values
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())
CURLINFO_PRIVATE
option.
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
<?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);
?>
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.