2010-03-28 22:10:10 +00:00
<?xml version="1.0" encoding="utf-8"?>
2009-07-11 06:43:42 +00:00
<!-- $Revision$ -->
2007-06-20 22:25:43 +00:00
<refentry xml:id= 'function.curl-getinfo' xmlns= "http://docbook.org/ns/docbook" >
2007-01-16 20:18:05 +00:00
<refnamediv >
<refname > curl_getinfo</refname>
<refpurpose > Get information regarding a specific transfer</refpurpose>
</refnamediv>
2007-01-17 00:14:52 +00:00
<refsect1 role= "description" >
&reftitle.description;
2007-01-16 20:18:05 +00:00
<methodsynopsis >
<type > mixed</type> <methodname > curl_getinfo</methodname>
<methodparam > <type > resource</type> <parameter > ch</parameter> </methodparam>
2016-06-21 20:45:47 +00:00
<methodparam choice= "opt" > <type > int</type> <parameter > opt</parameter> </methodparam>
2007-01-16 20:18:05 +00:00
</methodsynopsis>
<para >
2010-01-03 23:14:44 +00:00
Gets information about the last transfer.
2007-01-17 00:14:52 +00:00
</para>
</refsect1>
<refsect1 role= "parameters" >
&reftitle.parameters;
<para >
<variablelist >
&curl.ch.description;
<varlistentry >
<term > <parameter > opt</parameter> </term>
<listitem >
<para >
2007-02-05 10:09:00 +00:00
This may be one of the following constants:
2007-01-17 00:14:52 +00:00
<itemizedlist >
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_EFFECTIVE_URL</constant> - Last effective URL
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_HTTP_CODE</constant> - Last received HTTP code
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2016-07-10 10:39:17 +00:00
<constant > CURLINFO_FILETIME</constant> - Remote time of the retrieved document, with the <constant > CURLOPT_FILETIME</constant> enabled; if -1 is returned the time of the document is unknown
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_TOTAL_TIME</constant> - Total transaction time in seconds for last transfer
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_NAMELOOKUP_TIME</constant> - Time in seconds until name resolving was complete
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_CONNECT_TIME</constant> - Time in seconds it took to establish the connection
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_PRETRANSFER_TIME</constant> - Time in seconds from start until just before file transfer begins
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_STARTTRANSFER_TIME</constant> - Time in seconds until the first byte is about to be transferred
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
2012-06-18 23:46:30 +00:00
<listitem >
<simpara >
2014-10-21 18:32:54 +00:00
<constant > CURLINFO_REDIRECT_COUNT</constant> - Number of redirects, with the <constant > CURLOPT_FOLLOWLOCATION</constant> option enabled
2012-06-18 23:46:30 +00:00
</simpara>
</listitem>
2007-01-17 00:14:52 +00:00
<listitem >
<simpara >
2014-10-21 18:32:54 +00:00
<constant > CURLINFO_REDIRECT_TIME</constant> - Time in seconds of all redirection steps before final transaction was started, with the <constant > CURLOPT_FOLLOWLOCATION</constant> option enabled
</simpara>
</listitem>
<listitem >
<simpara >
2014-12-30 12:51:33 +00:00
<constant > CURLINFO_REDIRECT_URL</constant> - With the <constant > CURLOPT_FOLLOWLOCATION</constant> option disabled: redirect URL found in the last transaction, that should be requested manually next. With the <constant > CURLOPT_FOLLOWLOCATION</constant> option enabled: this is empty. The redirect URL in this case is available in <constant > CURLINFO_EFFECTIVE_URL</constant>
2014-10-21 18:32:54 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_PRIMARY_IP</constant> - IP address of the most recent connection
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_PRIMARY_PORT</constant> - Destination port of the most recent connection
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_LOCAL_IP</constant> - Local (source) IP address of the most recent connection
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_LOCAL_PORT</constant> - Local (source) port of the most recent connection
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_SIZE_UPLOAD</constant> - Total number of bytes uploaded
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_SIZE_DOWNLOAD</constant> - Total number of bytes downloaded
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_SPEED_DOWNLOAD</constant> - Average download speed
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_SPEED_UPLOAD</constant> - Average upload speed
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_HEADER_SIZE</constant> - Total size of all headers received
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2010-10-23 14:56:22 +00:00
<constant > CURLINFO_HEADER_OUT</constant> - The request string sent. For this to
2010-12-23 10:59:04 +00:00
work, add the <constant > CURLINFO_HEADER_OUT</constant> option to the handle by calling
2010-10-23 14:56:22 +00:00
<function > curl_setopt</function>
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_REQUEST_SIZE</constant> - Total size of issued requests, currently only for HTTP requests
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2009-05-03 12:27:22 +00:00
<constant > CURLINFO_SSL_VERIFYRESULT</constant> - Result of SSL certification verification requested by setting <constant > CURLOPT_SSL_VERIFYPEER</constant>
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2016-04-24 00:32:49 +00:00
<constant > CURLINFO_CONTENT_LENGTH_DOWNLOAD</constant> - Content length of download, read from <literal > Content-Length:</literal> field
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2007-02-05 10:09:00 +00:00
<constant > CURLINFO_CONTENT_LENGTH_UPLOAD</constant> - Specified size of upload
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
<listitem >
<simpara >
2016-04-24 00:32:49 +00:00
<constant > CURLINFO_CONTENT_TYPE</constant> - <literal > Content-Type:</literal> of the requested document. NULL indicates server did not send valid <literal > Content-Type:</literal> header
2007-01-17 00:14:52 +00:00
</simpara>
</listitem>
2014-12-30 12:51:33 +00:00
<listitem >
<simpara >
<constant > CURLINFO_PRIVATE</constant> - Private data associated with this cURL handle, previously set with the <constant > CURLOPT_PRIVATE</constant> option of <function > curl_setopt</function>
</simpara>
</listitem>
2016-04-24 00:32:49 +00:00
<listitem >
<simpara >
<constant > CURLINFO_RESPONSE_CODE</constant> - The last response code
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_HTTP_CONNECTCODE</constant> - The CONNECT response code
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_HTTPAUTH_AVAIL</constant> - Bitmask indicating the authentication method(s) available according to the previous response
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_PROXYAUTH_AVAIL</constant> - Bitmask indicating the proxy authentication method(s) available according to the previous response
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_OS_ERRNO</constant> - Errno from a connect failure. The number is OS and system specific.
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_NUM_CONNECTS</constant> - Number of connections curl had to create to achieve the previous transfer
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_SSL_ENGINES</constant> - OpenSSL crypto-engines supported
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_COOKIELIST</constant> - All known cookies
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_FTP_ENTRY_PATH</constant> - Entry path in FTP server
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_APPCONNECT_TIME</constant> - Time in seconds it took from the start until the SSL/SSH connect/handshake to the remote host was completed
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_CERTINFO</constant> - TLS certificate chain
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_CONDITION_UNMET</constant> - Info on unmet time conditional
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_RTSP_CLIENT_CSEQ</constant> - Next RTSP client CSeq
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_RTSP_CSEQ_RECV</constant> - Recently received CSeq
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_RTSP_SERVER_CSEQ</constant> - Next RTSP server CSeq
</simpara>
</listitem>
<listitem >
<simpara >
<constant > CURLINFO_RTSP_SESSION_ID</constant> - RTSP session ID
</simpara>
</listitem>
2007-01-17 00:14:52 +00:00
</itemizedlist>
</para>
</listitem>
</varlistentry>
</variablelist>
2007-01-16 20:18:05 +00:00
</para>
2007-01-17 00:14:52 +00:00
</refsect1>
2007-01-16 20:18:05 +00:00
2007-01-17 00:14:52 +00:00
<refsect1 role= "returnvalues" >
&reftitle.returnvalues;
2007-01-16 20:18:05 +00:00
<para >
2013-10-04 17:16:50 +00:00
If <parameter > opt</parameter> is given, returns its value.
2007-01-17 00:14:52 +00:00
Otherwise, returns an associative array with the following elements
2011-08-17 10:59:32 +00:00
(which correspond to <parameter > opt</parameter> ), or &false; on failure:
2007-01-16 20:18:05 +00:00
<itemizedlist >
<listitem >
<simpara >
"url"
</simpara>
</listitem>
<listitem >
<simpara >
"content_type"
</simpara>
</listitem>
<listitem >
<simpara >
"http_code"
</simpara>
</listitem>
<listitem >
<simpara >
"header_size"
</simpara>
</listitem>
<listitem >
<simpara >
"request_size"
</simpara>
</listitem>
<listitem >
<simpara >
"filetime"
</simpara>
</listitem>
<listitem >
<simpara >
"ssl_verify_result"
</simpara>
</listitem>
<listitem >
<simpara >
"redirect_count"
</simpara>
</listitem>
<listitem >
<simpara >
"total_time"
</simpara>
</listitem>
<listitem >
<simpara >
"namelookup_time"
</simpara>
</listitem>
<listitem >
<simpara >
"connect_time"
</simpara>
</listitem>
<listitem >
<simpara >
"pretransfer_time"
</simpara>
</listitem>
<listitem >
<simpara >
"size_upload"
</simpara>
</listitem>
<listitem >
<simpara >
"size_download"
</simpara>
</listitem>
<listitem >
<simpara >
"speed_download"
</simpara>
</listitem>
<listitem >
<simpara >
"speed_upload"
</simpara>
</listitem>
<listitem >
<simpara >
"download_content_length"
</simpara>
</listitem>
<listitem >
<simpara >
"upload_content_length"
</simpara>
</listitem>
<listitem >
<simpara >
"starttransfer_time"
</simpara>
</listitem>
<listitem >
<simpara >
"redirect_time"
</simpara>
</listitem>
2010-10-23 14:56:22 +00:00
<listitem >
<simpara >
"certinfo"
</simpara>
</listitem>
2014-10-21 18:32:54 +00:00
<listitem >
<simpara >
"primary_ip"
</simpara>
</listitem>
<listitem >
<simpara >
"primary_port"
</simpara>
</listitem>
<listitem >
<simpara >
"local_ip"
</simpara>
</listitem>
<listitem >
<simpara >
"local_port"
</simpara>
</listitem>
<listitem >
<simpara >
"redirect_url"
</simpara>
</listitem>
2010-10-23 14:56:22 +00:00
<listitem >
<simpara >
"request_header" (This is only set if the <constant > CURLINFO_HEADER_OUT</constant>
2010-10-25 19:38:17 +00:00
is set by a previous call to <function > curl_setopt</function> )
2010-10-23 14:56:22 +00:00
</simpara>
</listitem>
2007-01-16 20:18:05 +00:00
</itemizedlist>
2014-12-30 12:51:33 +00:00
Note that private data is not included in the associative array and must be retrieved individually with the <constant > CURLINFO_PRIVATE</constant> option.
2007-01-16 20:18:05 +00:00
</para>
</refsect1>
2008-10-01 08:29:12 +00:00
2009-03-23 21:08:01 +00:00
<refsect1 role= "changelog" >
&reftitle.changelog;
<para >
<informaltable >
<tgroup cols= "2" >
<thead >
<row >
<entry > &Version; </entry>
<entry > &Description; </entry>
</row>
</thead>
<tbody >
2015-04-04 04:17:53 +00:00
<row >
2016-04-24 00:32:49 +00:00
<entry > 5.5.0</entry>
2016-04-24 03:44:18 +00:00
<entry >
2016-04-24 00:32:49 +00:00
Introduced <constant > CURLINFO_RESPONSE_CODE</constant> ,
<constant > CURLINFO_HTTP_CONNECTCODE</constant> ,
<constant > CURLINFO_HTTPAUTH_AVAIL</constant> ,
<constant > CURLINFO_PROXYAUTH_AVAIL</constant> ,
<constant > CURLINFO_OS_ERRNO</constant> ,
<constant > CURLINFO_NUM_CONNECTS</constant> ,
<constant > CURLINFO_SSL_ENGINES</constant> ,
<constant > CURLINFO_COOKIELIST</constant> ,
<constant > CURLINFO_FTP_ENTRY_PATH</constant> ,
<constant > CURLINFO_APPCONNECT_TIME</constant> ,
<constant > CURLINFO_CONDITION_UNMET</constant> ,
<constant > CURLINFO_RTSP_CLIENT_CSEQ</constant> ,
<constant > CURLINFO_RTSP_CSEQ_RECV</constant> ,
<constant > CURLINFO_RTSP_SERVER_CSEQ</constant> and
<constant > CURLINFO_RTSP_SESSION_ID</constant> .
</entry>
</row>
2016-04-24 03:44:18 +00:00
<row >
2015-04-04 04:17:53 +00:00
<entry > 5.4.7</entry>
<entry >
Introduced <constant > CURLINFO_PRIMARY_IP</constant> ,
<constant > CURLINFO_PRIMARY_PORT</constant> ,
<constant > CURLINFO_LOCAL_IP</constant> and
<constant > CURLINFO_LOCAL_PORT</constant> .
</entry>
</row>
2014-10-21 18:32:54 +00:00
<row >
<entry > 5.3.7</entry>
<entry >
Introduced <constant > CURLINFO_REDIRECT_URL</constant> .
</entry>
</row>
2016-04-24 00:32:49 +00:00
<row >
<entry > 5.3.0</entry>
<entry >
Introduced <constant > CURLINFO_CERTINFO</constant> .
</entry>
</row>
2014-12-30 12:51:33 +00:00
<row >
<entry > 5.2.4</entry>
<entry >
Introduced <constant > CURLINFO_PRIVATE</constant> .
</entry>
</row>
2009-03-23 21:08:01 +00:00
<row >
<entry > 5.1.3</entry>
<entry >
Introduced <constant > CURLINFO_HEADER_OUT</constant> .
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
2008-10-01 08:29:12 +00:00
<refsect1 role= "examples" >
&reftitle.examples;
<para >
<example >
<title > <function > curl_getinfo</function> example</title>
<programlisting role= "php" >
< ![CDATA[
< ?php
2016-04-24 00:32:49 +00:00
// Create a cURL handle
$ch = curl_init('http://www.example.com/');
2008-10-01 08:29:12 +00:00
// Execute
curl_exec($ch);
2013-01-29 01:47:09 +00:00
// Check if any error occurred
2016-04-24 00:32:49 +00:00
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);
?>
]]>
</programlisting>
</example>
</para>
<para >
<example >
<title > <function > curl_getinfo</function> example with <parameter > opt</parameter> parameter</title>
<programlisting role= "php" >
< ![CDATA[
< ?php
// Create a cURL handle
$ch = curl_init('http://www.example.com/');
// Execute
curl_exec($ch);
2008-10-01 08:29:12 +00:00
2016-04-24 00:32:49 +00:00
// 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";
}
2008-10-01 08:29:12 +00:00
}
// Close handle
curl_close($ch);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
2010-10-20 00:39:01 +00:00
<refsect1 role= "notes" >
&reftitle.notes;
<note >
<para >
Information gathered by this function is kept if the handle is re-used. This means
2010-10-25 19:38:17 +00:00
that unless a statistic is overridden internally by this function, the previous info
2010-10-20 00:39:01 +00:00
is returned.
</para>
</note>
</refsect1>
2007-01-16 20:18:05 +00:00
</refentry>
2002-04-15 00:12:54 +00:00
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
2009-09-25 07:04:39 +00:00
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
2002-04-15 00:12:54 +00:00
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->