curl_file_create
curl_init
cURL Functions
PHP Manual

# curl_getinfo

(PHP 4 >= 4.0.4, PHP 5)

curl_getinfo — Get information regarding a specific transfer

### Description

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

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, 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()

### 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.4.7 | Introduced `CURLINFO_PRIMARY_IP`, `CURLINFO_PRIMARY_PORT`, `CURLINFO_LOCAL_IP` and `CURLINFO_LOCAL_PORT`.
5.3.7 | Introduced `CURLINFO_REDIRECT_URL`.
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.yahoo.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'];
}
// 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.

curl_file_create
curl_init
cURL Functions
PHP Manual