初始化/关闭
//初始化新的会话,返回 cURL 句柄,出错返回 false
curl_init(string $url = null):resource
//关闭 cURL 会话并且释放所有资源。cURL 句柄 ch 也会被删除
curl_close(resource $ch):bool
设置
//为 cURL 会话句柄设置选项
curl_setopt(resource $ch , int $option , mixed $value):bool
option 需要设置的CURLOPT_XXX选项
CURLOPT_NOPROGRESS true 时关闭 cURL 的传输进度
CURLOPT_AUTOREFERER true 时将根据 Location: 重定向时,自动设置 header 中的Referer:信息。
CURLOPT_COOKIESESSION 设为 true 时将开启新的一次 cookie 会话。它将强制 libcurl 忽略之前会话时存的其他 cookie。 libcurl 在默认状况下无论是否为会话,都会储存、加载所有 cookie。会话 cookie 是指没有过期时间,只存活在会话之中。
CURLOPT_CERTINFO true 将在安全传输时输出 SSL 证书信息到 STDERR
CURLOPT_FAILONERROR 当 HTTP 状态码大于等于 400,true 将将显示错误详情。 默认情况下将返回页面,忽略 HTTP 代码
CURLOPT_FOLLOWLOCATION true 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。
CURLOPT_TCP_NODELAY true 时禁用 TCP 的 Nagle 算法,就是减少网络上的小包数量。
CURLOPT_HEADER 启用时会将头文件的信息作为数据流输出。
CURLOPT_HTTPGET true 时会设置 HTTP 的 method 为 GET,由于默认是 GET,所以只有 method 被修改时才需要这个选项。
CURLOPT_POST true 时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。
CURLOPT_PUT true 时允许 HTTP 发送文件。要被 PUT 的文件必须在 CURLOPT_INFILE和CURLOPT_INFILESIZE 中设置。
CURLOPT_RETURNTRANSFER true 将curl_exec()获取的信息以字符串返回,而不是直接输出。
CURLOPT_SSL_VERIFYPEER false 禁止 cURL 验证对等证书(peer's certificate)。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录。
CURLOPT_BUFFERSIZE 每次读入的缓冲的尺寸。当然不保证每次都会完全填满这个尺寸。
CURLOPT_CONNECTTIMEOUT 在尝试连接时等待的秒数。设置为0,则无限等待
CURLOPT_CONNECTTIMEOUT_MS 尝试连接等待的时间,以毫秒为单位。设置为0,则无限等待。
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (默认值,让 cURL 自己判断使用哪个版本),CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。
CURLOPT_LOW_SPEED_LIMIT 传输速度,每秒字节(bytes)数,根据CURLOPT_LOW_SPEED_TIME秒数统计是否因太慢而取消传输。
CURLOPT_TIMEOUT 允许 cURL 函数执行的最长秒数
CURLOPT_TIMEOUT_MS 设置cURL允许执行的最长毫秒数。
CURLOPT_CAINFO 一个保存着1个或多个用来让服务端验证的证书的文件名。这个参数仅仅在和CURLOPT_SSL_VERIFYPEER一起使用时才有意义。 .
CURLOPT_CAPATH 一个保存着多个CA证书的目录。这个选项是和CURLOPT_SSL_VERIFYPEER一起使用的。
CURLOPT_COOKIE 设定 HTTP 请求中"Cookie: "部分的内容。多个 cookie 用分号分隔,分号后带一个空格
CURLOPT_COOKIEFILE 包含 cookie 数据的文件名,cookie 文件的格式可以是 Netscape 格式,或者只是纯 HTTP 头部风格,存入文件。如果文件名是空的,不会加载 cookie,但 cookie 的处理仍旧启用。
CURLOPT_COOKIEJAR 连接结束后,比如,调用 curl_close 后,保存 cookie 信息的文件。
CURLOPT_URL 需要获取的 URL 地址
CURLOPT_USERAGENT 在HTTP请求中包含一个"User-Agent: "头的字符串。
CURLOPT_HTTPHEADER 设置 HTTP 头字段的数组。格式: array('Content-type: text/plain', 'Content-length: 100')
CURLOPT_FILE 设置输出文件,默认为STDOUT (浏览器)
CURLOPT_INFILE 上传文件时需要读取的文件。
CURLOPT_STDERR 错误输出的地址,取代默认的STDERR。
CURLOPT_WRITEHEADER 设置 header 部分内容的写入的文件地址。
CURLOPT_HEADERFUNCTION 设置一个回调函数,这个函数有两个参数,第一个是cURL的资源句柄,第二个是输出的 header 数据。header数据的输出必须依赖这个函数,返回已写入的数据大小。
CURLOPT_PROGRESSFUNCTION 设置一个回调函数,有五个参数,第一个是cURL的资源句柄,第二个是预计要下载的总字节(bytes)数。第三个是目前下载的字节数,第四个是预计传输中总上传字节数,第五个是目前上传的字节数。只有设置 CURLOPT_NOPROGRESS 选项为 false 时才会调用这个回调函数
value 将设置在option选项上的值
//为 cURL 传输会话批量设置选项
curl_setopt_array(resource $ch , array $options):bool
options 一个 array 用来确定将被设置的选项及其值。数组的键值必须是一个有效的curl_setopt()常量或者是它们对等的整数值。
执行
//执行给定的 cURL 会话
curl_exec(resource $ch):mixed
暂停/重置
//暂停和取消暂停一个连接,返回一个错误代码 (如果没有错误则返回CURLE_OK常量)
curl_pause(resource $ch , int $bitmask):int
bitmask CURLPAUSE_* 常量之一
//重置一个 libcurl 会话句柄的所有的选项
curl_reset(resource $ch):void
获取错误
//返回最后一次的错误代码
curl_errno(resource $ch):int
//返回错误代码的字符串描述
curl_strerror(int $errornum):string
//返回当前会话最后一次错误的字符串
curl_error(resource $ch):string
批处理初始化/关闭
//返回一个新cURL批处理句柄
curl_multi_init():resource
//关闭一组cURL句柄
curl_multi_close(resource $mh):void
批处理添加/移除单独句柄
//向curl批处理会话中添加单独的curl句柄,增加ch句柄到批处理会话mh
curl_multi_add_handle(resource $mh , resource $ch):int
//移除cURL批处理句柄资源中的某个句柄资源,从给定的批处理句柄mh中移除ch句柄。当ch句柄被移除以后,仍然可以合法地用curl_exec()执行这个句柄。如果要移除的句柄正在被使用,则这个句柄涉及的所有传输任务会被中止。
curl_multi_remove_handle(resource $mh , resource $ch):int
批处理执行
//处理在栈中的每一个句柄。无论该句柄需要读取或写入数据都可调用此方法
curl_multi_exec(resource $mh , int &$still_running):int
still_running 一个用来判断操作是否仍在执行的标识的引用
批处理等待连接
//等待所有cURL批处理中的活动连接
curl_multi_select(resource $mh , float $timeout = 1.0):int
timeout 以秒为单位,等待响应的时间
获取批处理结果
//如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流,如果CURLOPT_RETURNTRANSFER作为一个选项被设置到一个具体的句柄,那么这个函数将会以字符串的形式返回那个cURL句柄获取的内容。
curl_multi_getcontent(resource $ch):string
批处理设置
//为 cURL批处理设置一个选项
curl_multi_setopt(resource $mh , int $option , mixed $value):bool
option 常量 CURLMOPT_* 之一
value 将要设置给 option 的值
获取批处理错误
//返回一个整型数字,为上次 curl 批处理错误码
curl_multi_errno(resource $mh):int
//返回一个用以描述所给 CURLM 错误代码所对应的错误信息
curl_multi_strerror(int $errornum):string
获取批处理传输信息
//获取当前解析的cURL的相关传输信息,查询批处理句柄是否单独的传输线程中有消息或信息返回。消息可能包含诸如从单独的传输线程返回的错误码或者只是传输线程有没有完成之类的报告。重复调用这个函数,它每次都会返回一个新的结果,直到这时没有更多信息返回时;失败时返回false
curl_multi_info_read(resource $mh , int &$msgs_in_queue = null):array
msgs_in_queue 仍在队列中的消息数量
共享句柄初始化/关闭
//初始化一个 cURL 共享句柄。
curl_share_init():resource
//关闭一个 cURL 共享句柄并且释放所有的资源
curl_share_close(resource $sh):void
共享句柄设置
//为 cURL 共享句柄设置选项,失败时返回 false
curl_share_setopt(resource $sh , int $option , string $value):bool
option
CURLSHOPT_SHARE 指定要共享的数据类型。
CURLSHOPT_UNSHARE 指定不再共享的数据类型
value
CURL_LOCK_DATA_COOKIE 共享 cookie 数据。
CURL_LOCK_DATA_DNS 共享 DNS 缓存。注意,当你使用 cURL 多句柄时,默认所有添加在同一个多句柄的句柄都将会共享 DNS 缓存。
CURL_LOCK_DATA_SSL_SESSION 共享 SSL 的 session ID, 在重连同样的服务器时减少 SSL 握手时间。注意,SSL 的 session ID 在同一个的句柄中默认是重复使用的。
共享句柄获取错误
//返回一个整数,表示共享 curl 句柄的最后一次错误号
curl_share_errno(resource $sh):int
//返回错误号对应的错误消息
curl_share_strerror(int $errornum):string
文件对象
//创建 CURLFile 对象,使用 CURLOPT_POSTFIELDS 选项上传文件
curl_file_create(string $filename , string $mimetype = ? , string $postname = ?):CURLFile
filename 被上传文件的 路径。
mimetype 被上传文件的 MIME 类型。
postname 上传数据里面的文件名
复制句柄
//复制一个cURL句柄和它的所有选项
curl_copy_handle(resource $ch):resource
url编码解码
//使用 URL 编码给定的字符串,失败时返回 false
curl_escape(resource $ch , string $str):string
//解码给定的 URL 编码的字符串
curl_unescape(resource $ch , string $str):string
获取传输信息
//获取一个cURL连接资源句柄的信息,获取最后一次传输的相关信息
curl_getinfo(resource $ch , int $opt = 0):mixed
opt 以下常量之一
CURLINFO_EFFECTIVE_URL - 最后一个有效的URL地址
CURLINFO_HTTP_CODE - 最后一个收到的HTTP代码
CURLINFO_FILETIME - 远程获取文档的时间,如果无法获取,则返回值为“-1”
CURLINFO_TOTAL_TIME - 最后一次传输所消耗的时间
CURLINFO_NAMELOOKUP_TIME - 名称解析所消耗的时间
CURLINFO_CONNECT_TIME - 建立连接所消耗的时间
CURLINFO_PRETRANSFER_TIME - 从建立连接到准备传输所使用的时间
CURLINFO_STARTTRANSFER_TIME - 从建立连接到传输开始所使用的时间
CURLINFO_REDIRECT_TIME - 在事务传输开始前重定向所使用的时间
CURLINFO_SIZE_UPLOAD - 以字节为单位返回上传数据量的总值
CURLINFO_SIZE_DOWNLOAD - 以字节为单位返回下载数据量的总值
CURLINFO_SPEED_DOWNLOAD - 平均下载速度
CURLINFO_SPEED_UPLOAD - 平均上传速度
CURLINFO_HEADER_SIZE - header部分的大小
CURLINFO_HEADER_OUT - 发送请求的字符串
CURLINFO_REQUEST_SIZE - 在HTTP请求中有问题的请求的大小
CURLINFO_SSL_VERIFYRESULT - 通过设置CURLOPT_SSL_VERIFYPEER返回的SSL证书验证请求的结果
CURLINFO_CONTENT_LENGTH_DOWNLOAD - 从Content-Length: field中读取的下载内容长度
CURLINFO_CONTENT_LENGTH_UPLOAD - 上传内容大小的说明
CURLINFO_CONTENT_TYPE - 下载内容的Content-Type:值,NULL表示服务器没有发送有效的Content-Type: header
扩展信息
//返回关于 cURL 版本的信息
curl_version(int $age = CURLVERSION_NOW):array