curl_getinfo

Get information regarding a specific transfer

&reftitle.description; `mixed` `curl_getinfo` `resource` `ch` `int` `opt` 0

Gets information about the last transfer.

&reftitle.parameters;

&curl.ch.description;

`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

  - `CURLINFO_REDIRECT_TIME` - Time in seconds of all redirection steps before final transaction was started

  - `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

&reftitle.returnvalues;

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"

- "request_header" (This is only set if the `CURLINFO_HEADER_OUT` is set by a previous call to `curl_setopt`)

&reftitle.changelog;

&Version; | &Description;
5.1.3 | Introduced `CURLINFO_HEADER_OUT`.

&reftitle.examples;

### `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);
    ?>

&reftitle.notes;

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.