curl_getinfo

Get information regarding a specific transfer

Description

mixed curl_getinfo ( resource $ch [, int $opt ] )

Gets information about the last transfer.

Parameters

ch

A cURL handle returned by curl_init.

opt

This may be one of the following constants:

  • CURLINFO_EFFECTIVE_URL - Last effective URL
  • CURLINFO_HTTP_CODE - Last received HTTP 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

Return Values

If opt is given, returns its value. Otherwise, returns an associative array with the following elements (which correspond to opt), 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.

Changelog

Version Description
5.5.0 Introduced CURLINFO_RESPONSE_CODE, CURLINFO_HTTP_CONNECTCODE, CURLINFO_HTTPAUTH_AVAIL, CURLINFO_PROXYAUTH_AVAIL, CURLINFO_OS_ERRNO, CURLINFO_NUM_CONNECTS, CURLINFO_SSL_ENGINES, CURLINFO_COOKIELIST, CURLINFO_FTP_ENTRY_PATH, CURLINFO_APPCONNECT_TIME, CURLINFO_CONDITION_UNMET, CURLINFO_RTSP_CLIENT_CSEQ, CURLINFO_RTSP_CSEQ_RECV, CURLINFO_RTSP_SERVER_CSEQ and CURLINFO_RTSP_SESSION_ID.
5.4.7 Introduced CURLINFO_PRIMARY_IP, CURLINFO_PRIMARY_PORT, CURLINFO_LOCAL_IP and CURLINFO_LOCAL_PORT.
5.3.7 Introduced CURLINFO_REDIRECT_URL.
5.3.0 Introduced CURLINFO_CERTINFO.
5.2.4 Introduced CURLINFO_PRIVATE.
5.1.3 Introduced CURLINFO_HEADER_OUT.

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 opt 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($chCURLINFO_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.