Files
php-doc-ru/reference/curl/functions/curl-getinfo.xml

638 lines
25 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: b7f8c11e56ff1c57a2993e2ed7e5c5ace18637fd Maintainer: rjhdby Status: ready -->
<!-- Reviewed: yes -->
<!-- $Revision$ -->
<refentry xml:id="function.curl-getinfo" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>curl_getinfo</refname>
<refpurpose>Возвращает информацию об определённой операции</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>mixed</type><methodname>curl_getinfo</methodname>
<methodparam><type>CurlHandle</type><parameter>handle</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>option</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Возвращает информацию о последней операции.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
&curl.ch.description;
<varlistentry>
<term><parameter>option</parameter></term>
<listitem>
<para>
Одна из перечисленных констант:
<itemizedlist>
<listitem>
<simpara>
<constant>CURLINFO_EFFECTIVE_URL</constant> - Последний использованный URL
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_HTTP_CODE</constant> - Последний код ответа.
Начиная с PHP 5.5.0 и cURL 7.10.8, это устаревший псевдоним
<constant>CURLINFO_RESPONSE_CODE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_FILETIME</constant> - Удалённая (серверная) дата загруженного документа, если включена опция <constant>CURLOPT_FILETIME</constant>; если получено -1, значит это время неизвестно
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_TOTAL_TIME</constant> - Общее время выполнения транзакции в секундах последней передачи
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_NAMELOOKUP_TIME</constant> - Время разрешения имени сервера в секундах
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_CONNECT_TIME</constant> - Время в секундах, затраченное на установку соединения
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_PRETRANSFER_TIME</constant> - Время в секундах, прошедшее от начала операции до готовности к фактической передаче данных
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_STARTTRANSFER_TIME</constant> - Время в секундах до передачи первого байта данных
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_REDIRECT_COUNT</constant> - Число перенаправлений с включённой опцией <constant>CURLOPT_FOLLOWLOCATION</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_REDIRECT_TIME</constant> - Общее время в секундах, затраченное на перенаправления до начала последней транзакции с включённой опцией <constant>CURLOPT_FOLLOWLOCATION</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_REDIRECT_URL</constant> - При отключённой опции <constant>CURLOPT_FOLLOWLOCATION</constant>: URL перенаправления, найденный в прошлой итерации, который необходимо запрашивать вручную. Если опция <constant>CURLOPT_FOLLOWLOCATION</constant> включена: пустое значение. URL перенаправления в этом случае доступен в <constant>CURLINFO_EFFECTIVE_URL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_PRIMARY_IP</constant> - IP-адрес последнего соединения
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_PRIMARY_PORT</constant> - Порт получателя последнего соединения
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_LOCAL_IP</constant> - Локальный (исходящий) IP адрес последнего соединения
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_LOCAL_PORT</constant> - Локальный (исходящий) порт последнего соединения
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SIZE_UPLOAD</constant> - Общее количество байт при закачке
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SIZE_DOWNLOAD</constant> - Общее количество байт при загрузке
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SPEED_DOWNLOAD</constant> - Средняя скорость загрузки
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SPEED_UPLOAD</constant> - Средняя скорость закачки
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_HEADER_SIZE</constant> - Суммарный размер всех полученных заголовков
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_HEADER_OUT</constant> - Посылаемая строка запроса. Для работы этого параметра, добавьте опцию <constant>CURLINFO_HEADER_OUT</constant> к дескриптору с помощью вызова <function>curl_setopt</function>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_REQUEST_SIZE</constant> - Суммарный размер всех отправленных запросов, в настоящее время используется только для HTTP-запросов
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SSL_VERIFYRESULT</constant> - Результат проверки SSL-сертификата, запрошенной с помощью установки параметра <constant>CURLOPT_SSL_VERIFYPEER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_CONTENT_LENGTH_DOWNLOAD</constant> - размер скачанных данных, прочитанный из заголовка <literal>Content-Length:</literal>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_CONTENT_LENGTH_UPLOAD</constant> - Размер закачиваемых данных
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_CONTENT_TYPE</constant> - Содержимое полученного заголовка <literal>Content-Type:</literal>. Если NULL, то сервер не послал правильный заголовок <literal>Content-Type:</literal>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_PRIVATE</constant> - Внутренние данные, связанные с данным cURL-обработчиком, ранее установленные с помощью опции <constant>CURLOPT_PRIVATE</constant> в функции <function>curl_setopt</function>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_RESPONSE_CODE</constant> - Последний код возврата
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_HTTP_CONNECTCODE</constant> - Код ответа операции CONNECT
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_HTTPAUTH_AVAIL</constant> - Битовая маска, показывающая возможные методы аутентификации, доступные при предыдущем ответе
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_PROXYAUTH_AVAIL</constant> - Битовая маска, показывающая возможные методы аутентификации на прокси, доступные при предыдущем ответе
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_OS_ERRNO</constant> - Номер ошибки при попытке соединения. Код может различаться в зависимости от системы и ОС
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_NUM_CONNECTS</constant> - Количество соединений, совершенных curl для обеспечения предыдущей передачи
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SSL_ENGINES</constant> - Поддержка OpenSSL
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_COOKIELIST</constant> - Все известные куки
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_FTP_ENTRY_PATH</constant> - Путь входа на FTP-сервер
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_APPCONNECT_TIME</constant> - Время в секундах от начала и до установления SSL/SSH connect/handshake с удалённым хостом
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_CERTINFO</constant> - связка ключей TLS
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_CONDITION_UNMET</constant> - информация о неудовлетворённых временных условиях
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_RTSP_CLIENT_CSEQ</constant> - Следующий RTSP клиентского CSeq
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_RTSP_CSEQ_RECV</constant> - Недавно полученный CSeq
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_RTSP_SERVER_CSEQ</constant> - Следующий RTSP серверного CSeq
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_RTSP_SESSION_ID</constant> - ID сессии RTSP
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_CONTENT_LENGTH_DOWNLOAD_T</constant> - Content-length загрузки. Это значение считывается из поля <literal>Content-Type:</literal>. -1 если размер не известен
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_CONTENT_LENGTH_UPLOAD_T</constant> - Указанный размер загрузки. -1 если размер не известен
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_HTTP_VERSION</constant> - Версия, использованная в последнем HTTP-соединении. Возвращаемое значение будет одной из определённых констант <constant>CURL_HTTP_VERSION_*</constant> или 0, если версия не может быть определена
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_PROTOCOL</constant> - Протокол, использованный в последнем HTTP-соединении. Возвращаемое значение будет точно одним из значений <constant>CURLPROTO_*</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_PROXY_SSL_VERIFYRESULT</constant> - Результат проверки сертификата, который был запрошен (с использованием параметра <constant>CURLOPT_PROXY_SSL_VERIFYPEER</constant>). Используется только для HTTPS-прокси
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SCHEME</constant> - Схема URL, используемая для самого последнего соединения
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SIZE_DOWNLOAD_T</constant> - Общее количество скачанных байтов. Номер предназначен только для последней передачи и будет сбрасываться для каждой новой передачи.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SIZE_UPLOAD_T</constant> - Общее количество загруженных байтов
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SPEED_DOWNLOAD_T</constant> - Средняя скорость скачивания в байтах/секунду, измеренная для полного скачивания
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_SPEED_UPLOAD_T</constant> - Средняя скорость загрузки в байтах/секунду, измеренная для полной загрузки
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_APPCONNECT_TIME_T</constant> - Время в микросекундах, которое прошло с самого начала до тех пор, пока соединение/рукопожатие SSL/SSH не было завершено
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_CONNECT_TIME_T</constant> - Общее время, затрачиваемое в микросекундах с начала до момента подключения к удалённому хосту (или прокси-серверу)
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_FILETIME_T</constant> - Удалённое время извлечённого документа (как метка времени Unix), альтернатива <constant>CURLINFO_FILETIME</constant>, чтобы разрешить системам с 32-битными long-переменными извлекать даты вне диапазона 32-битных временных меток
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_NAMELOOKUP_TIME_T</constant> -в Время в микросекундах от начала до разрешения имени
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_PRETRANSFER_TIME_T</constant> - Время в микросекундах, затраченное с самого начала до начала передачи файла
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_REDIRECT_TIME_T</constant> - Общее время в микросекундах, которое потребовалось для всех шагов перенаправления, включая поиск имени, подключение, предварительный перенос и передачу до запуска окончательной транзакции
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_STARTTRANSFER_TIME_T</constant> - Время в микросекундах, которое прошло с начала до получения первого байта
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLINFO_TOTAL_TIME_T</constant> - Общее время в микросекундах для предыдущей передачи, включая разрешение имён, TCP-соединение и т. д.
</simpara>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Если параметр <parameter>option</parameter> указан, то возвращается его
значение. Иначе возвращается ассоциативный массив со
следующими элементами (которые соответствуют значениям аргумента
<parameter>option</parameter>) или &false; в случае ошибки:
<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>
<listitem>
<simpara>
"certinfo"
</simpara>
</listitem>
<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>
<listitem>
<simpara>
"request_header" (возвращается только при установленной
опции <constant>CURLINFO_HEADER_OUT</constant>
с помощью вызова <function>curl_setopt</function> до выполнения запроса)
</simpara>
</listitem>
</itemizedlist>
Учтите, что внутренние данные не добавляются в ассоциативный массив и должны получаться отдельно с помощью опции <constant>CURLINFO_PRIVATE</constant>.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&curl.changelog.handle-param;
<row>
<entry>8.0.0</entry>
<entry>
<parameter>option</parameter> is nullable now;
previously, the default was <literal>0</literal>.
</entry>
</row>
<row>
<entry>7.3.0</entry>
<entry>
Добавлены <constant>CURLINFO_CONTENT_LENGTH_DOWNLOAD_T</constant>,
<constant>CURLINFO_CONTENT_LENGTH_UPLOAD_T</constant>,
<constant>CURLINFO_HTTP_VERSION</constant>,
<constant>CURLINFO_PROTOCOL</constant>,
<constant>CURLINFO_PROXY_SSL_VERIFYRESULT</constant>,
<constant>CURLINFO_SCHEME</constant>,
<constant>CURLINFO_SIZE_DOWNLOAD_T</constant>,
<constant>CURLINFO_SIZE_UPLOAD_T</constant>,
<constant>CURLINFO_SPEED_DOWNLOAD_T</constant>,
<constant>CURLINFO_SPEED_UPLOAD_T</constant>,
<constant>CURLINFO_APPCONNECT_TIME_T</constant>,
<constant>CURLINFO_CONNECT_TIME_T</constant>,
<constant>CURLINFO_FILETIME_T</constant>,
<constant>CURLINFO_NAMELOOKUP_TIME_T</constant>,
<constant>CURLINFO_PRETRANSFER_TIME_T</constant>,
<constant>CURLINFO_REDIRECT_TIME_T</constant>,
<constant>CURLINFO_STARTTRANSFER_TIME_T</constant>,
<constant>CURLINFO_TOTAL_TIME_T</constant>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>curl_getinfo</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Создаём дескриптор cURL
$ch = curl_init('http://www.example.com/');
// Запускаем
curl_exec($ch);
// Проверяем наличие ошибок
if (!curl_errno($ch)) {
$info = curl_getinfo($ch);
echo 'Прошло ', $info['total_time'], ' секунд во время запроса к ', $info['url'], "\n";
}
// Закрываем дескриптор
curl_close($ch);
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Пример использования <function>curl_getinfo</function> с параметром <parameter>option</parameter></title>
<programlisting role="php">
<![CDATA[
<?php
// Создаём дескриптор cURL
$ch = curl_init('http://www.example.com/');
// Запускаем
curl_exec($ch);
// Проверяем наличие ошибок
if (!curl_errno($ch)) {
switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
case 200: # OK
break;
default:
echo 'Неожиданный код HTTP: ', $http_code, "\n";
}
}
// Закрываем дескриптор
curl_close($ch);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
Информация, собранная этой функцией, будет сохранена при дальнейшем
использовании дескриптора. Это означает, что если статистика не
будет перезаписана самой функцией, будет возвращаться информация
по предыдущему запросу.
</para>
</note>
</refsect1>
</refentry>
<!-- 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
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
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
-->