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);
?>
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
curl_multi_setopt — 设置 cURL 并行选项
为给定的 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 起,设置管道 bit 没有效果。除了整数文字,还可以使用 CURLPIPE_* 常量(如果可用)。 |
CURLMOPT_MAXCONNECTS |
传递数字,该数字将用作 libcurl 可以缓存的同时打开的最大连接数。默认情况下,数量将放大为适应 curl_multi_add_handle() 添加的句柄数量的四倍。当缓存已满时,curl 会关闭缓存中最早的一个,以防止打开的连接数增加。 |
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE |
传递数字,用于指定用于管道处理的块长度阈值(以字节为单位)。 |
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE |
传递数字,指定用于管道惩罚(pipelining penalty)的长度阈值(以字节为单位)。 |
CURLMOPT_MAX_CONCURRENT_STREAMS |
设置的数字将用作 cURL 在使用 HTTP/2 连接中应支持的最大并发流数量。有效值范围是从 1 到
2147483647 (2^31 - 1 )。这里设置的值将根据其他系统资源属性来确定是否执行。默认值是
100 。
|
CURLMOPT_MAX_HOST_CONNECTIONS |
传递一个数字,指定连接单个主机的最大数量。 |
CURLMOPT_MAX_PIPELINE_LENGTH |
传递数字,指定管道中的最大请求数。 |
CURLMOPT_MAX_TOTAL_CONNECTIONS |
传递数字,指定同时打开连接的最大数量。 |
CURLMOPT_PUSHFUNCTION |
传递 callable 以注册处理服务器推送且应具有以下签名:
CURL_PUSH_OK ,或者返回 CURL_PUSH_DENY 拒绝。
|
版本 | 说明 |
---|---|
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_SIZE 、CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 、CURLMOPT_MAX_HOST_CONNECTIONS 、CURLMOPT_MAX_PIPELINE_LENGTH
和 CURLMOPT_MAX_TOTAL_CONNECTIONS 。
|
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);
?>