curl_getinfo

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

curl_getinfo获取一个cURL连接资源句柄的信息

说明

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

获取最后一次传输的相关信息。

参数

handle

curl_init() 返回的 cURL 句柄。

option

这个参数可能是以下常量之一:

  • CURLINFO_EFFECTIVE_URL——最后一个有效的 URL
  • CURLINFO_HTTP_CODE——最后的响应代码。从 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 在上次事务中找到,接下来应该手动请求。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 地址
  • 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——检索到的所有 header 大小
  • CURLINFO_HEADER_OUT——发送请求的字符串。为此,通过调用 curl_setopt()CURLINFO_HEADER_OUT 选项添加到句柄
  • CURLINFO_REQUEST_SIZE——已发出请求的总大小,当前仅针对 HTTP 请求
  • CURLINFO_SSL_VERIFYRESULT——通过设置 CURLOPT_SSL_VERIFYPEER 请求的 SSL 认证验证结果
  • CURLINFO_CONTENT_LENGTH_DOWNLOAD——从 Content-Length: 字段中读取的下载内容长度
  • CURLINFO_CONTENT_LENGTH_UPLOAD——上传指定大小
  • CURLINFO_CONTENT_TYPE——Content-Type:所请求文档的类型。NULL 表示服务器没有发送有效的 Content-Type: header
  • CURLINFO_PRIVATE——与此 cURL 句柄关联的私有数据,之前使用 curl_setopt()CURLOPT_PRIVATE 选项设置
  • CURLINFO_RESPONSE_CODE——最后的响应代码
  • CURLINFO_HTTP_CONNECTCODE——CONNECT 响应代码
  • CURLINFO_HTTPAUTH_AVAIL——位掩码表示先前响应可用的身份验证方法
  • CURLINFO_PROXYAUTH_AVAIL——位掩码表示先前响应可用的代理身份验证方法
  • CURLINFO_OS_ERRNO——来自连接失败的 Errno。该数字特定于 OS 和指定系统。
  • CURLINFO_NUM_CONNECTS - Number of connections curl had to create to achieve the previous transfer
  • CURLINFO_SSL_ENGINES——支持 OpenSSL 加密引擎
  • CURLINFO_COOKIELIST——所有已知的 cookie
  • CURLINFO_FTP_ENTRY_PATH——FTP 服务器中的入口路径
  • CURLINFO_APPCONNECT_TIME——从开始到SSL/SSH 完成与远程主机的连接/握手所花费的时间(以秒为单位)
  • 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——RTSP 会话 ID
  • CURLINFO_CONTENT_LENGTH_DOWNLOAD_T——下载的内容长度。此值从 Content-Type: 字段读取。如果大小未知则为 -1
  • CURLINFO_CONTENT_LENGTH_UPLOAD_T——上传的指定大小。如果未知则为 -1
  • CURLINFO_HTTP_VERSION - The version used in the last HTTP connection. The return value will be one of the defined CURL_HTTP_VERSION_* constants or 0 if the version can't be determined
  • CURLINFO_PROTOCOL - The protocol used in the last HTTP connection. The returned value will be exactly one of the CURLPROTO_* values
  • CURLINFO_PROXY_SSL_VERIFYRESULT - The result of the certificate verification that was requested (using the CURLOPT_PROXY_SSL_VERIFYPEER option). Only used for HTTPS proxies
  • CURLINFO_SCHEME - The URL scheme used for the most recent connection
  • CURLINFO_SIZE_DOWNLOAD_T - Total number of bytes that were downloaded. The number is only for the latest transfer and will be reset again for each new transfer
  • CURLINFO_SIZE_UPLOAD_T——上传的总字节数
  • CURLINFO_SPEED_DOWNLOAD_T - The average download speed in bytes/second that curl measured for the complete download
  • CURLINFO_SPEED_UPLOAD_T - The average upload speed in bytes/second that curl measured for the complete upload
  • CURLINFO_APPCONNECT_TIME_T - Time, in microseconds, it took from the start until the SSL/SSH connect/handshake to the remote host was completed
  • CURLINFO_CONNECT_TIME_T - Total time taken, in microseconds, from the start until the connection to the remote host (or proxy) was completed
  • CURLINFO_FILETIME_T - Remote time of the retrieved document (as Unix timestamp), an alternative to CURLINFO_FILETIME to allow systems with 32 bit long variables to extract dates outside of the 32bit timestamp range
  • CURLINFO_NAMELOOKUP_TIME_T——从开始到名称解析完成的时间(以微秒为单位)
  • CURLINFO_PRETRANSFER_TIME_T - Time taken from the start until the file transfer is just about to begin, in microseconds
  • CURLINFO_REDIRECT_TIME_T - Total time, in microseconds, it took for all redirection steps include name lookup, connect, pretransfer and transfer before final transaction was started
  • 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"(只有在之前调用 curl_setopt() 设置 CURLINFO_HEADER_OUT 后才会设置)
注意,私有数据不包含在关联数组中,必须使用 CURLINFO_PRIVATE 选项单独检索。

更新日志

版本 说明
8.0.0 handle expects a CurlHandle instance now; previously, a resource was expected.
8.0.0 option 现在可为 null;之前默认值是 0
7.3.0 引入 CURLINFO_CONTENT_LENGTH_DOWNLOAD_TCURLINFO_CONTENT_LENGTH_UPLOAD_TCURLINFO_HTTP_VERSIONCURLINFO_PROTOCOLCURLINFO_PROXY_SSL_VERIFYRESULTCURLINFO_SCHEMECURLINFO_SIZE_DOWNLOAD_TCURLINFO_SIZE_UPLOAD_TCURLINFO_SPEED_DOWNLOAD_TCURLINFO_SPEED_UPLOAD_TCURLINFO_APPCONNECT_TIME_TCURLINFO_CONNECT_TIME_TCURLINFO_FILETIME_TCURLINFO_NAMELOOKUP_TIME_TCURLINFO_PRETRANSFER_TIME_TCURLINFO_REDIRECT_TIME_TCURLINFO_STARTTRANSFER_TIME_TCURLINFO_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
'Took ', $info['total_time'], ' seconds to send a request to ', $info['url'], "\n";
}

// 关闭句柄
curl_close($ch);
?>

示例 #2 使用 option 参数的 curl_getinfo() 示例

<?php
// 创建 cURL 句柄
$ch = curl_init('http://www.example.com/');

// 执行
curl_exec($ch);

// 检测 HTTP 状态码
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";
}
}

// 关闭句柄
curl_close($ch);
?>

注释

注意:

如果重新使用句柄,则保留此函数收集的信息。这意味着除非此函数在内部覆盖统计信息,否则将返回以前的信息。

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top