curl_multi_setopt

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

curl_multi_setopt设置 cURL 并行选项

说明

curl_multi_setopt(CurlMultiHandle $multi_handle, int $option, mixed $value): bool

为给定的 cURL 并行句柄设置选项。

参数

multi_handle

curl_multi_init() 返回的 cURL 多个句柄。

option

常量 CURLMOPT_* 之一。

value

将要设置给 option 的值。

option 参数为下列值时 value 需要为 int 类型:

选项 设置 value
CURLMOPT_PIPELINING 传递 1 启用或传递 0 禁用。在多句柄上启用管道将使其尝试对使用此句柄的传输尽可能执行 HTTP 管道操作。这意味着如果添加的第二个请求可以使用已有连接,则第二个请求将在同一连接上使用“管道”。 从 cURL 7.43.0 开始,该值是位掩码,如果可能,您还可以传递 2 以尝试在已有的 HTTP/2 连接上复用多路新传输。传递 3 指示 cURL 请求彼此独立的管道和多路复用。 从 cURL 7.62.0 开始,设置管道位没有效果。除了整数文字,还可以使用 CURLPIPE_* 常量(如果可用)。
CURLMOPT_MAXCONNECTS 传递数字,该数字将用作 libcurl 可以缓存的同时打开的最大连接数。默认情况下,数量将放大为适应 curl_multi_add_handle() 添加的句柄数量的四倍。当缓存已满时,curl 会关闭缓存中最早的一个,以防止打开的连接数增加。
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 传递数字,以字节为单位指定管道的块(chunk)长度阈值。
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE Pass a number that specifies the size threshold for pipelining penalty in bytes.
CURLMOPT_MAX_CONCURRENT_STREAMS The set number will be used as the maximum number of concurrent streams for a connections that cURL should support on connections done using HTTP/2. Valid values range from 1 to 2147483647 (2^31 - 1). The value passed here would be honored based on other system resources properties. Default is 100.
CURLMOPT_MAX_HOST_CONNECTIONS 传递一个数字,指定连接单个主机的最大数量。
CURLMOPT_MAX_PIPELINE_LENGTH 传递数字,指定管道中的最大请求数。
CURLMOPT_MAX_TOTAL_CONNECTIONS 传递数字,指定同时打开连接的最大数量。
CURLMOPT_PUSHFUNCTION 传递 callable 以注册处理服务器推送且应具有以下签名:
pushfunction(resource $parent_ch, resource $pushed_ch, array $headers): int
parent_ch

父级 cURL 句柄(客户端发出的请求)。

pushed_ch

推送请求的新 cURL 句柄。

headers

The push promise headers.

推送函数如果可以处理推送应该返回 CURL_PUSH_OK,或者返回 CURL_PUSH_DENY 拒绝。

返回值

成功时返回 true, 或者在失败时返回 false

更新日志

版本 说明
8.2.0 引入 CURLMOPT_MAX_CONCURRENT_STREAMS
8.0.0 multi_handle expects a CurlMultiHandle instance now; previously, a resource was expected.
7.1.0 引入 CURLMOPT_PUSHFUNCTION
7.0.7 引入 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZECURLMOPT_CONTENT_LENGTH_PENALTY_SIZECURLMOPT_MAX_HOST_CONNECTIONSCURLMOPT_MAX_PIPELINE_LENGTHCURLMOPT_MAX_TOTAL_CONNECTIONS

add a note add a note

User Contributed Notes 1 note

up
1
ryosuke_i_628 at yahoo dot co dot jp
8 years ago
If you want to enable both HTTP/1.1 pipelining and HTTP/2 multiplexing...

<?php
curl_multi_setopt
($mh, CURLMOPT_PIPELINING, 3);
?>

or

<?php
curl_multi_setopt
($mh, CURLMOPT_PIPELINING, CURLPIPE_HTTP1 | CURLPIPE_MULTIPLEX);
?>
To Top