Files
php-doc-ru/reference/session/functions/session-gc.xml
Alexey Pyltsyn 4078b271ba Upd
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@343483 c90b9560-bf6c-de11-be94-00142212c4b1
2017-11-28 16:39:18 +00:00

136 lines
5.5 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 742f5f2c5b366fd761618bab6423c5fde6fd69a5 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: yes Maintainer: lex -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-gc">
<refnamediv>
<refname>session_gc</refname>
<refpurpose>Выполняет сборку мусора данных сессии</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</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="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
-->