-
Notifications
You must be signed in to change notification settings - Fork 70
/
session-gc.xml
138 lines (127 loc) · 5.62 KB
/
session-gc.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
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 35b95a56ccc03b66af7117fc815ac7881e2e0ad3 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.session-gc" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>session_gc</refname>
<refpurpose>Выполняет сборку мусора данных сессии</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>session_gc</methodname>
<void />
</methodsynopsis>
<para>
<function>session_gc</function> используется для выполнения сборки
мусора (garbage collection) для данных сессии. По умолчанию PHP выполняет
основанную на вероятности сборку мусора сессии.
</para>
<para>
Сборка мусора, основанная на вероятности в целом работает, но имеет
несколько проблем. 1) На низкозагруженных сайтах данные сессии могут
быть не удалены в течение желаемого времени. 2) На высокозагруженных
сайтах сборка мусора может выполняться слишком часто. 3) Сборка мусора
выполняется во время обработки запроса пользователя, что приводит к
дополнительной задержке для пользователя.
</para>
<para>
Поэтому рекомендуется выполнять сборку мусора на рабочих системах периодически,
например, использовать задачи cron в UNIX-подобных системах. При этом убедитесь,
что отключили сборку мусора на основе вероятности, установив
<link linkend="ini.session.gc-probability">session.gc_probability</link> в 0.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<function>session_gc</function> возвращает число удалённых данных сессии при
успешном выполнении и &false; в случае неудачи.
</para>
<para>
Старые обработчики сессии не возвращают число удалённых данных сессии, а
только флаг успеха/неудачи. В этом случае, число удалённых данных сессии
всегда будет равно 1, независимо от фактического количества удалённых данных.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>session_gc</function> в диспетчерах задач, таких как cron</title>
<programlisting role="php">
<![CDATA[
<?php
// Примечание: Данный скрипт должен выполняться под тем же пользователем процесса веб-сервера.
// Нужна активная сессия для инициализации доступа к хранилищу данных сессии.
session_start();
// Принудительное выполнение сборки мусора
session_gc();
// Очистка идентификатора сессии
session_destroy();
?>
]]>
</programlisting>
</example>
<example>
<title>Пример использования <function>session_gc</function> в скрипте, доступном пользователю</title>
<programlisting role="php">
<![CDATA[
<?php
// Примечание: session_gc() рекомендуется использовать через скрипт диспетчера задач,
// но можно использовать и следующим образом.
// Используется для проверки времени последней сборки мусора
$gc_time = '/tmp/php_session_last_gc';
$gc_period = 1800;
session_start();
// Выполнять сборку мусора только по истечении периода,
// поскольку вызов session_gc() при каждом запросе является пустой тратой ресурсов.
if (file_exists($gc_time)) {
if (filemtime($gc_time) < time() - $gc_period) {
session_gc();
touch($gc_time);
}
} else {
touch($gc_time);
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>session_start</function></member>
<member><function>session_destroy</function></member>
<member><link linkend="ini.session.gc-probability">session.gc_probability</link></member>
</simplelist>
</para>
</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
-->