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 上的值。

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 完成的连接上支持的并发流的最大数量。有效值范围从 12147483647 (2^31 - 1)。这里传递的值将根据其他系统资源属性来遵守。默认值为 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

推送承诺标头。

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

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
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_SIZECURLMOPT_CONTENT_LENGTH_PENALTY_SIZECURLMOPT_MAX_HOST_CONNECTIONSCURLMOPT_MAX_PIPELINE_LENGTHCURLMOPT_MAX_TOTAL_CONNECTIONS

添加注释

用户贡献的注释 1 个注释

ryosuke_i_628 at yahoo dot co dot jp
8 年前
如果您想同时启用 HTTP/1.1 流水线和 HTTP/2 多路复用...

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

或者

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