CakeFest 2024: The Official CakePHP Conference

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, полученный из curl_multi_init().

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(), умноженное на 4. Когда кеш заполнится, 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, который будет зарегистрирован для обработки пушей от сервера и должен иметь следующую сигнатуру:
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 теперь ожидает экземпляр; раньше, ожидался ресурс (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.

add a note

User Contributed Notes 1 note

up
0
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