Jesus · Bible · HTML · CSS · JS · PHP · SVG · Applications

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:

ConstantDescription
CURLINFO_EFFECTIVE_URLLast effective URL
CURLINFO_HTTP_CODEThe last response code. This is a legacy alias of CURLINFO_RESPONSE_CODE
CURLINFO_FILETIMERemote time of the retrieved document, with the CURLOPT_FILETIME enabled; if -1 is returned the time of the document is unknown
CURLINFO_TOTAL_TIMETotal transaction time in seconds for last transfer
CURLINFO_NAMELOOKUP_TIMETime in seconds until name resolving was complete
CURLINFO_CONNECT_TIMETime in seconds it took to establish the connection
CURLINFO_PRETRANSFER_TIMETime in seconds from start until just before file transfer begins
CURLINFO_STARTTRANSFER_TIMETime in seconds until the first byte is about to be transferred
CURLINFO_REDIRECT_COUNTNumber of redirects, with the CURLOPT_FOLLOWLOCATION option enabled
CURLINFO_REDIRECT_TIMETime in seconds of all redirection steps before final transaction was started, with the CURLOPT_FOLLOWLOCATION option enabled
CURLINFO_REDIRECT_URLWith 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_IPIP address of the most recent connection
CURLINFO_PRIMARY_PORTDestination port of the most recent connection
CURLINFO_LOCAL_IPLocal (source) IP address of the most recent connection
CURLINFO_LOCAL_PORTLocal (source) port of the most recent connection
CURLINFO_SIZE_UPLOADTotal number of bytes uploaded
CURLINFO_SIZE_DOWNLOADTotal number of bytes downloaded
CURLINFO_SPEED_DOWNLOADAverage download speed
CURLINFO_SPEED_UPLOADAverage upload speed
CURLINFO_HEADER_SIZETotal size of all headers received
CURLINFO_HEADER_OUTThe request string sent. For this to work, add the CURLINFO_HEADER_OUT option to the handle by calling curl_setopt()
CURLINFO_REQUEST_SIZETotal size of issued requests, currently only for HTTP requests
CURLINFO_SSL_VERIFYRESULTResult of SSL certification verification requested by setting CURLOPT_SSL_VERIFYPEER
CURLINFO_CONTENT_LENGTH_DOWNLOADContent length of download, read from Content-Length: field
CURLINFO_CONTENT_LENGTH_UPLOADSpecified size of upload
CURLINFO_CONTENT_TYPEContent-Type: of the requested document. NULL indicates server did not send valid Content-Type: header
CURLINFO_PRIVATEPrivate data associated with this cURL handle, previously set with the CURLOPT_PRIVATE option of curl_setopt()
CURLINFO_RESPONSE_CODEThe last response code
CURLINFO_HTTP_CONNECTCODEThe CONNECT response code
CURLINFO_HTTPAUTH_AVAILBitmask indicating the authentication method(s) available according to the previous response
CURLINFO_PROXYAUTH_AVAILBitmask indicating the proxy authentication method(s) available according to the previous response
CURLINFO_OS_ERRNOErrno from a connect failure. The number is OS and system specific.
CURLINFO_NUM_CONNECTSNumber of connections curl had to create to achieve the previous transfer
CURLINFO_SSL_ENGINESOpenSSL crypto-engines supported
CURLINFO_COOKIELISTAll known cookies
CURLINFO_FTP_ENTRY_PATHEntry path in FTP server
CURLINFO_APPCONNECT_TIMETime in seconds it took from the start until the SSL/SSH connect/handshake to the remote host was completed
CURLINFO_CERTINFOTLS certificate chain
CURLINFO_CONDITION_UNMETInfo on unmet time conditional
CURLINFO_RTSP_CLIENT_CSEQNext RTSP client CSeq
CURLINFO_RTSP_CSEQ_RECVRecently received CSeq
CURLINFO_RTSP_SERVER_CSEQNext RTSP server CSeq
CURLINFO_RTSP_SESSION_IDRTSP session ID
CURLINFO_CONTENT_LENGTH_DOWNLOAD_TThe 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_TThe specified size of the upload. -1 if the size isn't known
CURLINFO_HTTP_VERSIONThe 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_PROTOCOLThe protocol used in the last HTTP connection. The returned value will be exactly one of the CURLPROTO_* values
CURLINFO_PROXY_SSL_VERIFYRESULTThe result of the certificate verification that was requested (using the CURLOPT_PROXY_SSL_VERIFYPEER option). Only used for HTTPS proxies
CURLINFO_SCHEMEThe URL scheme used for the most recent connection
CURLINFO_SIZE_DOWNLOAD_TTotal 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_TTotal number of bytes that were uploaded
CURLINFO_SPEED_DOWNLOAD_TThe average download speed in bytes/second that curl measured for the complete download
CURLINFO_SPEED_UPLOAD_TThe average upload speed in bytes/second that curl measured for the complete upload
CURLINFO_APPCONNECT_TIME_TTime, in microseconds, it took from the start until the SSL/SSH connect/handshake to the remote host was completed
CURLINFO_CONNECT_TIME_TTotal time taken, in microseconds, from the start until the connection to the remote host (or proxy) was completed
CURLINFO_FILETIME_TRemote 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_TTime in microseconds from the start until the name resolving was completed
CURLINFO_PRETRANSFER_TIME_TTime taken from the start until the file transfer is just about to begin, in microseconds
CURLINFO_REDIRECT_TIME_TTotal time, in microseconds, it took for all redirection steps include name lookup, connect, pretransfer and transfer before final transaction was started
CURLINFO_STARTTRANSFER_TIME_TTime, in microseconds, it took from the start until the first byte is received
CURLINFO_TOTAL_TIME_TTotal 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: */*

HomeMenu