curl_getinfo

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

curl_getinfoВозвращает информацию об определенной операции

Описание

curl_getinfo ( CurlHandle $handle , int|null $option = null ) : mixed

Возвращает информацию о последней операции.

Список параметров

handle

Дескриптор cURL, полученный из curl_init().

option

Одна из перечисленных констант:

  • CURLINFO_EFFECTIVE_URL - Последний использованный URL
  • CURLINFO_HTTP_CODE - Последний код ответа. Начиная с PHP 5.5.0 и cURL 7.10.8, это устаревший псевдоним CURLINFO_RESPONSE_CODE
  • CURLINFO_FILETIME - Удаленная (серверная) дата загруженного документа, если включена опция CURLOPT_FILETIME; если получено -1, значит это время неизвестно
  • CURLINFO_TOTAL_TIME - Общее время выполнения транзакции в секундах последней передачи
  • CURLINFO_NAMELOOKUP_TIME - Время разрешения имени сервера в секундах
  • CURLINFO_CONNECT_TIME - Время в секундах, затраченное на установку соединения
  • CURLINFO_PRETRANSFER_TIME - Время в секундах, прошедшее от начала операции до готовности к фактической передаче данных
  • CURLINFO_STARTTRANSFER_TIME - Время в секундах до передачи первого байта данных
  • CURLINFO_REDIRECT_COUNT - Число перенаправлений с включенной опцией CURLOPT_FOLLOWLOCATION
  • CURLINFO_REDIRECT_TIME - Общее время в секундах, затраченное на перенаправления до начала последней транзакции с включенной опцией CURLOPT_FOLLOWLOCATION
  • CURLINFO_REDIRECT_URL - При отключенной опции CURLOPT_FOLLOWLOCATION: URL перенаправления, найденный в прошлой итерации, который необходимо запрашивать вручную. Если опция CURLOPT_FOLLOWLOCATION включена: пустое значение. URL перенаправления в этом случае доступен в CURLINFO_EFFECTIVE_URL
  • CURLINFO_PRIMARY_IP - IP-адрес последнего соединения
  • CURLINFO_PRIMARY_PORT - Порт получателя последнего соединения
  • CURLINFO_LOCAL_IP - Локальный (исходящий) IP адрес последнего соединения
  • CURLINFO_LOCAL_PORT - Локальный (исходящий) порт последнего соединения
  • CURLINFO_SIZE_UPLOAD - Общее количество байт при закачке
  • CURLINFO_SIZE_DOWNLOAD - Общее количество байт при загрузке
  • CURLINFO_SPEED_DOWNLOAD - Средняя скорость загрузки
  • CURLINFO_SPEED_UPLOAD - Средняя скорость закачки
  • CURLINFO_HEADER_SIZE - Суммарный размер всех полученных заголовков
  • CURLINFO_HEADER_OUT - Посылаемая строка запроса. Для работы этого параметра, добавьте опцию CURLINFO_HEADER_OUT к дескриптору с помощью вызова curl_setopt()
  • CURLINFO_REQUEST_SIZE - Суммарный размер всех отправленных запросов, в настоящее время используется только для HTTP запросов
  • CURLINFO_SSL_VERIFYRESULT - Результат проверки SSL-сертификата, запрошенной с помощью установки параметра CURLOPT_SSL_VERIFYPEER
  • CURLINFO_CONTENT_LENGTH_DOWNLOAD - размер скачанных данных, прочитанный из заголовка Content-Length:
  • CURLINFO_CONTENT_LENGTH_UPLOAD - Размер закачиваемых данных
  • CURLINFO_CONTENT_TYPE - Содержимое полученного заголовка Content-Type:. Если NULL, то сервер не послал правильный заголовок Content-Type:
  • CURLINFO_PRIVATE - Внутренние данные, связанные с данным cURL-обработчиком, ранее установленные с помощью опции CURLOPT_PRIVATE в функции curl_setopt()
  • CURLINFO_RESPONSE_CODE - Последний код возврата
  • CURLINFO_HTTP_CONNECTCODE - Код ответа операции CONNECT
  • CURLINFO_HTTPAUTH_AVAIL - Битовая маска, показывающая возможные методы аутентификации, доступные при предыдущем ответе
  • CURLINFO_PROXYAUTH_AVAIL - Битовая маска, показывающая возможные методы аутентификации на прокси, доступные при предыдущем ответе
  • CURLINFO_OS_ERRNO - Номер ошибки при попытке соединения. Код может различаться в зависимости от системы и ОС
  • CURLINFO_NUM_CONNECTS - Количество соединений, совершенных curl для обеспечения предыдущей передачи
  • CURLINFO_SSL_ENGINES - Поддержка OpenSSL
  • CURLINFO_COOKIELIST - Все известные куки
  • CURLINFO_FTP_ENTRY_PATH - Путь входа на FTP-сервер
  • CURLINFO_APPCONNECT_TIME - Время в секундах от начала и до установления SSL/SSH connect/handshake с удаленным хостом
  • CURLINFO_CERTINFO - связка ключей TLS
  • CURLINFO_CONDITION_UNMET - информация о неудовлетворенных временных условиях
  • CURLINFO_RTSP_CLIENT_CSEQ - Следующий RTSP клиентского CSeq
  • CURLINFO_RTSP_CSEQ_RECV - Недавно полученный CSeq
  • CURLINFO_RTSP_SERVER_CSEQ - Следующий RTSP серверного CSeq
  • CURLINFO_RTSP_SESSION_ID - ID сессии RTSP
  • CURLINFO_CONTENT_LENGTH_DOWNLOAD_T - Content-length загрузки. Это значение считывается из поля Content-Type:. -1 если размер не известен
  • CURLINFO_CONTENT_LENGTH_UPLOAD_T - Указанный размер загрузки. -1 если размер не известен
  • CURLINFO_HTTP_VERSION - Версия, использованная в последнем HTTP-соединении. Возвращаемое значение будет одной из определенных констант CURL_HTTP_VERSION_* или 0, если версия не может быть определена
  • CURLINFO_PROTOCOL - Протокол, использованный в последнем HTTP-соединении. Возвращаемое значение будет точно одним из значений CURLPROTO_*
  • CURLINFO_PROXY_SSL_VERIFYRESULT - Результат проверки сертификата, который был запрошен (с использованием параметра CURLOPT_PROXY_SSL_VERIFYPEER). Используется только для HTTPS-прокси
  • CURLINFO_SCHEME - Схема URL, используемая для самого последнего соединения
  • CURLINFO_SIZE_DOWNLOAD_T - Общее количество скачанных байтов. Номер предназначен только для последней передачи и будет сбрасываться для каждой новой передачи.
  • CURLINFO_SIZE_UPLOAD_T - Общее количество загруженных байтов
  • CURLINFO_SPEED_DOWNLOAD_T - Средняя скорость скачивания в байтах/секунду, измеренная для полного скачивания
  • CURLINFO_SPEED_UPLOAD_T - Средняя скорость загрузки в байтах/секунду, измеренная для полной загрузки
  • CURLINFO_APPCONNECT_TIME_T - Время в микросекундах, которое прошло с самого начала до тех пор, пока соединение/рукопожатие SSL/SSH не было завершено
  • CURLINFO_CONNECT_TIME_T - Общее время, затрачиваемое в микросекундах с начала до момента подключения к удаленному хосту (или прокси-серверу)
  • CURLINFO_FILETIME_T - Удаленное время извлеченного документа (как метка времени Unix), альтернатива CURLINFO_FILETIME, чтобы разрешить системам с 32-битными long-переменными извлекать даты вне диапазона 32-битных временных меток
  • CURLINFO_NAMELOOKUP_TIME_T -в Время в микросекундах от начала до разрешения имени
  • CURLINFO_PRETRANSFER_TIME_T - Время в микросекундах, затраченное с самого начала до начала передачи файла
  • CURLINFO_REDIRECT_TIME_T - Общее время в микросекундах, которое потребовалось для всех шагов перенаправления, включая поиск имени, подключение, предварительный перенос и передачу до запуска окончательной транзакции
  • CURLINFO_STARTTRANSFER_TIME_T - Время в микросекундах, которое прошло с начала до получения первого байта
  • CURLINFO_TOTAL_TIME_T - Общее время в микросекундах для предыдущей передачи, включая разрешение имен, TCP-соединение и т. д.

Возвращаемые значения

Если параметр option указан, то возвращается его значение. Иначе возвращается ассоциативный массив со следующими элементами (которые соответствуют значениям аргумента option) или false в случае ошибки:

  • "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" (возвращается только при установленной опции CURLINFO_HEADER_OUT с помощью вызова curl_setopt() до выполнения запроса)
Учтите, что внутренние данные не добавляются в ассоциативный массив и должны получаться отдельно с помощью опции CURLINFO_PRIVATE.

Список изменений

Версия Описание
8.0.0 handle теперь ожидает экземпляр CurlHandle; раньше, ожидался ресурс (resource).
8.0.0 option is nullable now; previously, the default was 0.
7.3.0 Добавлены CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, CURLINFO_CONTENT_LENGTH_UPLOAD_T, CURLINFO_HTTP_VERSION, CURLINFO_PROTOCOL, CURLINFO_PROXY_SSL_VERIFYRESULT, CURLINFO_SCHEME, CURLINFO_SIZE_DOWNLOAD_T, CURLINFO_SIZE_UPLOAD_T, CURLINFO_SPEED_DOWNLOAD_T, CURLINFO_SPEED_UPLOAD_T, CURLINFO_APPCONNECT_TIME_T, CURLINFO_CONNECT_TIME_T, CURLINFO_FILETIME_T, CURLINFO_NAMELOOKUP_TIME_T, CURLINFO_PRETRANSFER_TIME_T, CURLINFO_REDIRECT_TIME_T, CURLINFO_STARTTRANSFER_TIME_T, CURLINFO_TOTAL_TIME_T.

Примеры

Пример #1 Пример использования curl_getinfo()

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

Пример #2 Пример использования curl_getinfo() с параметром option

<?php
// Создаем дескриптор cURL
$ch curl_init('http://www.example.com/');

// Запускаем
curl_exec($ch);

// Проверяем наличие ошибок
if (!curl_errno($ch)) {
  switch (
$http_code curl_getinfo($chCURLINFO_HTTP_CODE)) {
    case 
200:  # OK
      
break;
    default:
      echo 
'Неожиданный код HTTP: '$http_code"\n";
  }
}

// Закрываем дескриптор
curl_close($ch);
?>

Примечания

Замечание:

Информация, собранная этой функцией, будет сохранена при дальнейшем использовании дескриптора. Это означает, что если статистика не будет перезаписана самой функцией, будет возвращаться информация по предыдущему запросу.