(PHP 4 >= 4.0.4, PHP 5, PHP 7)
curl_getinfo — Get information regarding a specific transfer
Gets information about the last transfer.
ch
A cURL handle returned by curl_init().
optThis 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
         
        
   If opt is given, returns its value.
   Otherwise, returns an associative array with the following elements 
   (which correspond to opt), or FALSE on failure:
   
CURLINFO_HEADER_OUT 
      is set by a previous call to curl_setopt())
     
    CURLINFO_PRIVATE option.
  
 
| 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_CSEQandCURLINFO_RTSP_SESSION_ID. | 
| 5.4.7 | Introduced CURLINFO_PRIMARY_IP,CURLINFO_PRIMARY_PORT,CURLINFO_LOCAL_IPandCURLINFO_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. | 
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($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.