1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-23 23:32:16 +01:00

Обновление до английской версии

This commit is contained in:
Sergey Panteleev
2026-02-08 12:45:01 +03:00
parent 71b0d464d7
commit 9f89ca6b0f

View File

@@ -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