curl_share_init_persistent

(PHP 8 >= 8.5.0)

curl_share_init_persistentИнициализирует постоянный разделяемый cURL-дескриптор

Описание

curl_share_init_persistent(array $share_options): CurlSharePersistentHandle

Функция инициализирует постоянный разделяемый дескриптор модуля cURL с общими параметрами. В отличие от функции curl_share_init(), дескрипторы, которые создаёт эта функция, не уничтожаются в конце PHP-запроса. Модуль переиспользует постоянный разделяемый дескриптор с тем же набором общих опций, которые установили в параметре share_options, если обнаружит такой.

Список параметров

share_options
Непустой массив констант семейства CURL_LOCK_DATA_*.

Замечание: В параметр нельзя передавать константу CURL_LOCK_DATA_COOKIE, функция выбросит ошибку ValueError, если не соблюдать это ограничение. Совместный доступ PHP-запросов к блокам данных cookies создаёт риск непреднамеренного перепутывания чувствительных блоков данных cookies между пользователями.

Возвращаемые значения

Функция возвращает объект класса CurlSharePersistentHandle.

Ошибки

  • При передаче в аргументе share_options пустого массива функция выбрасывает ошибку ValueError.
  • При передаче в аргументе share_options значений, которые не совпадают с константами семейства CURL_LOCK_DATA_*, функция выбрасывает ошибку ValueError.
  • При передаче в аргументе share_options константы CURL_LOCK_DATA_COOKIE функция выбрасывает ошибку ValueError.
  • При передаче в аргументе share_options нецелочисленного значения функция выбрасывает ошибку TypeError.

Примеры

Пример #1 Пример инициализации постоянного разделяемого cURL-дескриптора функцией curl_share_init_persistent()

Пример создаст постоянный общий cURL-дескриптор и покажет совместный доступ соединений к дескриптору. При выполнении сеансов передачи данных через долгоживущий SAPI-интерфейс языка PHP дескриптор $sh сохранится между SAPI-запросами.

<?php

// Создаём или получаем постоянный общий cURL-дескриптор, который настроен на совместную работу с DNS-запросами и подключениями
$sh = curl_share_init_persistent([CURL_LOCK_DATA_DNS, CURL_LOCK_DATA_CONNECT]);

// Инициализируем первый cURL-дескриптор и назначаем ему общий дескриптор
$ch1 = curl_init("http://example.com/");
curl_setopt($ch1, CURLOPT_SHARE, $sh);

// Выполняем первый cURL-дескриптор.
// Модуль совершит попытку передать данные через предыдущее соединение,
// если соединение открыли в предыдущем SAPI-запросе
curl_exec($ch1);

// Инициализируем второй cURL-дескриптор и назначаем ему общий дескриптор
$ch2 = curl_init("http://example.com/");
curl_setopt($ch2, CURLOPT_SHARE, $sh);

// Выполняем второй cURL-дескриптор. Модуль передаст данные через соединение дескриптора $ch1
curl_exec($ch2);

?>

Смотрите также

  • curl_setopt() - Устанавливает параметр для cURL-передачи
  • curl_share_init() - Инициализирует разделяемый cURL-дескриптор
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top