mirror of
https://github.com/php/doc-ru.git
synced 2026-03-23 23:32:16 +01:00
Обновление до английской версии
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: be8baf89c0016c1c39ab0b85cafca28c8364e95b Maintainer: rjhdby Status: ready -->
|
||||
<!-- EN-Revision: 372350f3bfad45ba01db850a1a3be40c803e196b Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="function.session-gc" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
<refname>session_gc</refname>
|
||||
@@ -13,25 +12,35 @@
|
||||
<type class="union"><type>int</type><type>false</type></type><methodname>session_gc</methodname>
|
||||
<void />
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
Функция <function>session_gc</function> собирает мусор, который оставили
|
||||
данные сессии. По умолчанию PHP запускает сборку мусорных данных сессии
|
||||
на основе вероятности.
|
||||
</para>
|
||||
<para>
|
||||
Сборка мусора на основе вероятности работает, но порождает
|
||||
ряд проблем. 1) На низконагруженных сайтах данные сессии иногда
|
||||
не удаляются за время, в течение которого ожидалась сборка мусора. 2) На высоконагруженных
|
||||
сайтах сборка мусора иногда выполняется слишком часто. 3) Сборка мусора
|
||||
выполняется во время обработки запроса пользователя и пользователь
|
||||
сталкивается с дополнительной задержкой.
|
||||
</para>
|
||||
<para>
|
||||
Поэтому рекомендуется периодически выполнять сборку мусора в производственных системах,
|
||||
например, через запуск cron-задач в UNIX-подобных системах. При этом
|
||||
сборку мусора на основе вероятности отключают установкой для директивы
|
||||
<link linkend="ini.session.gc-probability">session.gc_probability</link> значения 0.
|
||||
</para>
|
||||
<simpara>
|
||||
По умолчанию PHP использует <link linkend="ini.session.gc-probability">session.gc_probability</link>
|
||||
для запуска сборщика мусора сессий на основе вероятности при каждом запросе.
|
||||
У этого подхода есть ограничения:
|
||||
</simpara>
|
||||
<simplelist>
|
||||
<member>Данные сессий на сайтах с низкой посещаемостью могут не удаляться в течение предпочтительного периода времени.</member>
|
||||
<member>На сайтах с высокой посещаемостью сборщик мусора может запускаться слишком часто, выполняя ненужную дополнительную работу.</member>
|
||||
<member>Сбор мусора выполняется по запросу пользователя, и пользователь может столкнуться с задержкой.</member>
|
||||
</simplelist>
|
||||
<simpara>
|
||||
Для производственных систем рекомендуется отключить сборку мусора на основе вероятности,
|
||||
установив значение <link linkend="ini.session.gc-probability">session.gc_probability</link>
|
||||
равным <literal>0</literal> и явно запускать сборщик мусора периодически, например,
|
||||
с помощью «cron» в UNIX-подобных системах для запуска скрипта,
|
||||
который вызывает функцию <function>session_gc</function>.
|
||||
</simpara>
|
||||
|
||||
<note>
|
||||
<simpara>
|
||||
При вызове функции <function>session_gc</function> из PHP-скрипта в командной строке,
|
||||
<link linkend="ini.session.save-path">session.save_path</link> должен быть установлен на то же значение,
|
||||
что и для веб-запросов, а скрипт должен иметь права доступа и удаления для файлов сессии.
|
||||
На это могут влиять пользователь, от имени которого запускается скрипт,
|
||||
а также функции контейнера или песочницы,
|
||||
такие как опция <literal>PrivateTmp=</literal> systemd.
|
||||
option.
|
||||
</simpara>
|
||||
</note>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
@@ -41,54 +50,51 @@
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
<simpara>
|
||||
В случае успешного выполнения функция <function>session_gc</function> возвращает
|
||||
количество данных сессии, которые она удалила,
|
||||
или &false;, если возникла ошибка.
|
||||
</para>
|
||||
<para>
|
||||
Старые обработчики сохранения сессии не возвращают количество удалённых данных сессии,
|
||||
а только флаг успеха или неудачи. В этом случае количество удалённых данных сессии
|
||||
становится равным 1 независимо от фактического количества данных, которые удалила функция.
|
||||
</para>
|
||||
количество данных сессии, которые она удалила,&return.falseforfailure;.
|
||||
</simpara>
|
||||
<note>
|
||||
<simpara>
|
||||
Старые обработчики сохранения сессии не возвращают количество удалённых данных сессии,
|
||||
а только флаг успеха или неудачи. В этом случае количество удалённых данных сессии
|
||||
становится равным <literal>1</literal> независимо от фактического количества данных, которые удалила функция.
|
||||
</simpara>
|
||||
</note>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title>
|
||||
Пример использования функции <function>session_gc</function>
|
||||
в скрипте, который запускает диспетчер задач наподобие cron
|
||||
</title>
|
||||
<programlisting role="php">
|
||||
<example>
|
||||
<title>
|
||||
Пример использования функции <function>session_gc</function>
|
||||
в скрипте, который запускает диспетчер задач наподобие cron
|
||||
</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
// Примечание: Скрипт требуется запускать от имени того же пользователя, который запустил процесс веб-сервера
|
||||
|
||||
// Для инициализации доступа к хранилищу данных сессии требуется активная сессия
|
||||
session_start();
|
||||
|
||||
// Запускаем немедленную сборку мусора
|
||||
// Запуск немедленной сборки мусора
|
||||
session_gc();
|
||||
|
||||
// Очищаем идентификатор сессии, который создали в процессе сборки мусора
|
||||
// Очистка идентификатора сессии, который создан функцией session_start()
|
||||
session_destroy();
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>
|
||||
Пример сборки сессионного мусора функцией <function>session_gc</function>
|
||||
в доступном пользователю скрипте
|
||||
</title>
|
||||
<programlisting role="php">
|
||||
</programlisting>
|
||||
</example>
|
||||
<example>
|
||||
<title>
|
||||
Пример сборки сессионного мусора функцией <function>session_gc</function>
|
||||
в доступном пользователю скрипте
|
||||
</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
// Примечание: рекомендуется вызывать функцию session_gc() в скрипте, который запускает диспетчер задач,
|
||||
// но можно вызывать и в пользовательском скрипте
|
||||
|
||||
@@ -97,7 +103,6 @@ $gc_time = '/tmp/php_session_last_gc';
|
||||
$gc_period = 1800;
|
||||
|
||||
session_start();
|
||||
|
||||
// Собираем мусор только когда закончился период сборки мусора,
|
||||
// поскольку вызов функции session_gc() при каждом запросе напрасно расходует ресурсы
|
||||
if (file_exists($gc_time)) {
|
||||
@@ -108,26 +113,21 @@ if (file_exists($gc_time)) {
|
||||
} else {
|
||||
touch($gc_time);
|
||||
}
|
||||
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
</programlisting>
|
||||
</example>
|
||||
</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>
|
||||
<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>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
|
||||
Reference in New Issue
Block a user