(PHP 8 >= 8.5.0)
curl_share_init_persistent — Инициализирует постоянный разделяемый cURL-дескриптор
Функция инициализирует постоянный разделяемый дескриптор модуля 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);
?>