(PHP 5 >= 5.5.0, PHP 7, PHP 8)
curl_share_setopt — Устанавливает опции разделяемого cURL-дескриптора
Функция устанавливает опции разделяемого дескриптора модуля cURL.
share_handle
Разделяемый дескриптор модуля cURL, который возвращает функция curl_share_init().
option
Опция | Описание |
---|---|
CURLSHOPT_SHARE |
Указывает, данные какого типа будут разделяемыми. |
CURLSHOPT_UNSHARE |
Указывает, данные какого типа больше не будут разделяемыми. |
value
Значение | Описание |
---|---|
CURL_LOCK_DATA_COOKIE |
Разделяет данные cookie. |
CURL_LOCK_DATA_DNS |
Разделяет кеш DNS. Обратите внимание, дескрипторы модуля cURL, которые добавили к одному и тому же мультидескриптору, по умолчанию будут разделять DNS-кеш. |
CURL_LOCK_DATA_SSL_SESSION |
Разделяет идентификаторы SSL-сессий. Разделение идентификаторов сессий сокращает время SSL-рукопожатия при повторном подключении к тому же серверу. Обратите внимание, отдельный дескриптор повторно использует свои идентификаторы SSL-сессий по умолчанию. |
Функция возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Версия | Описание |
---|---|
8.0.0 |
Параметр share_handle теперь ожидает экземпляр класса CurlShareHandle;
рарьше параметр ждал ресурс (resource).
|
Пример #1 Пример использования функции curl_share_setopt()
Пример создаёт разделяемый cURL-дескриптор, добавляет в него два простых cURL-дескриптора и запускает простые дескрипторы с разделяемыми данными cookie.
<?php
// Создаём разделяемый дескриптор модуля cURL и настраиваем его на разделение данных cookie
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
// Инициализируем первый cURL-дескриптор и назначаем ему разделяемый дескриптор
$ch1 = curl_init("http://example.com/");
curl_setopt($ch1, CURLOPT_SHARE, $sh);
// Запускаем первый cURL-дескриптор
curl_exec($ch1);
// Инициализируем второй cURL-дескриптор и назначаем ему разделяемый дескриптор
$ch2 = curl_init("http://php.net/");
curl_setopt($ch2, CURLOPT_SHARE, $sh);
// Запускаем второй дескриптор.
// Cookies первого дескриптора $ch1 разделяются со вторым дескриптором $ch2
curl_exec($ch2);
// Закрываем разделяемый дескриптор
curl_share_close($sh);
// Закрываем простые дескрипторы
curl_close($ch1);
curl_close($ch2);
?>