-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathcurl-share-init-persistent.xml
156 lines (139 loc) · 6.84 KB
/
curl-share-init-persistent.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 9e08f606a38fb7c0de98b42375636692d43d7040 Maintainer: malferov Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.curl-share-init-persistent" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>curl_share_init_persistent</refname>
<refpurpose>Инициализирует <emphasis role="bold">постоянный</emphasis> разделяемый cURL-дескриптор</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>CurlSharePersistentHandle</type><methodname>curl_share_init_persistent</methodname>
<methodparam><type>array</type><parameter>share_options</parameter></methodparam>
</methodsynopsis>
<simpara>
Функция инициализирует <emphasis role="bold">постоянный</emphasis> разделяемый дескриптор модуля cURL
с общими параметрами. В отличие от функции <function>curl_share_init</function>,
дескрипторы, которые создаёт эта функция, не уничтожаются в конце
PHP-запроса. Модуль переиспользует постоянный разделяемый дескриптор с тем же набором
общих опций, которые установили в параметре <parameter>share_options</parameter>, если обнаружит такой.
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term><parameter>share_options</parameter></term>
<listitem>
<simpara>
Непустой массив констант семейства <constant>CURL_LOCK_DATA_<replaceable>*</replaceable></constant>.
</simpara>
<note>
<simpara>
В параметр нельзя передавать константу <constant>CURL_LOCK_DATA_COOKIE</constant>,
функция выбросит ошибку <exceptionname>ValueError</exceptionname>, если не соблюдать
это ограничение. Совместный доступ PHP-запросов к блокам данных cookies
создаёт риск непреднамеренного перепутывания чувствительных блоков данных cookies между пользователями.
</simpara>
</note>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
Функция возвращает объект класса <classname>CurlSharePersistentHandle</classname>.
</simpara>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<itemizedlist>
<listitem>
<simpara>
При передаче в аргументе <parameter>share_options</parameter> пустого массива
функция выбрасывает ошибку <exceptionname>ValueError</exceptionname>.
</simpara>
</listitem>
<listitem>
<simpara>
При передаче в аргументе <parameter>share_options</parameter> значений,
которые не совпадают с константами семейства <constant>CURL_LOCK_DATA_<replaceable>*</replaceable></constant>,
функция выбрасывает ошибку <classname>ValueError</classname>.
</simpara>
</listitem>
<listitem>
<simpara>
При передаче в аргументе <parameter>share_options</parameter>
константы <constant>CURL_LOCK_DATA_COOKIE</constant> функция выбрасывает
ошибку <exceptionname>ValueError</exceptionname>.
</simpara>
</listitem>
<listitem>
<simpara>
При передаче в аргументе <parameter>share_options</parameter> нецелочисленного значения
функция выбрасывает ошибку <exceptionname>TypeError</exceptionname>.
</simpara>
</listitem>
</itemizedlist>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example xml:id="function.curl-share-init-persistent.example.basic">
<title>Пример инициализации постоянного разделяемого cURL-дескриптора функцией <function>curl_share_init_persistent</function></title>
<simpara>
Пример создаст постоянный общий cURL-дескриптор и покажет
совместный доступ соединений к дескриптору. При выполнении сеансов передачи данных через долгоживущий
SAPI-интерфейс языка PHP дескриптор <literal>$sh</literal> сохранится между SAPI-запросами.
</simpara>
<programlisting role="php">
<![CDATA[
<?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);
?>
]]>
</programlisting>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><function>curl_setopt</function></member>
<member><function>curl_share_init</function></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->