如果您想同时启用 HTTP/1.1 流水线和 HTTP/2 多路复用...
<?php
curl_multi_setopt($mh, CURLMOPT_PIPELINING, 3);
?>
或者
<?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
上的值。
value
应该是一个 int,对于以下 option
参数的值
选项 | 将 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 |
传递一个数字,指定流水线的块长度阈值(以字节为单位)。 |
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE |
传递一个数字,指定流水线惩罚的大小阈值(以字节为单位)。 |
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 现在期望一个 CurlMultiHandle 实例;以前,期望一个 resource。 |
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 。 |
如果您想同时启用 HTTP/1.1 流水线和 HTTP/2 多路复用...
<?php
curl_multi_setopt($mh, CURLMOPT_PIPELINING, 3);
?>
或者
<?php
curl_multi_setopt($mh, CURLMOPT_PIPELINING, CURLPIPE_HTTP1 | CURLPIPE_MULTIPLEX);
?>