mirror of
https://github.com/php/doc-es.git
synced 2026-04-28 17:43:11 +02:00
cfd4751d62
* Document PHP 8.4.0 change to http_build_query() in relation to BackedEnums * Remove useless wrapping para tag and update EN-Revision * Various amendements to follow-up on GH-4936 * Improve session_gc documentation * docs: update windows recommended page with corrected info * Install from source: Point to README.md for instructions
145 lines
5.1 KiB
XML
145 lines
5.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 372350f3bfad45ba01db850a1a3be40c803e196b Maintainer: Marqitos Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<refentry xml:id="function.session-gc" xmlns="http://docbook.org/ns/docbook">
|
|
<refnamediv>
|
|
<refname>session_gc</refname>
|
|
<refpurpose>Ejecuta la recolección de basura de los datos de sesión</refpurpose>
|
|
</refnamediv>
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type class="union"><type>int</type><type>false</type></type><methodname>session_gc</methodname>
|
|
<void/>
|
|
</methodsynopsis>
|
|
<simpara>
|
|
Por omisión, PHP utiliza <link linkend="ini.session.gc-probability">session.gc_probability</link>
|
|
para ejecutar el recolector de basura de sesión de forma probabilística en cada
|
|
solicitud. Este enfoque presenta algunas limitaciones:
|
|
</simpara>
|
|
<simplelist>
|
|
<member>Es posible que sitios con poco tráfico no eliminen sus datos de sesión dentro del plazo preferido.</member>
|
|
<member>Sitios con mucho tráfico pueden hacer que el recolector de basura funcione con demasiada frecuencia, realizando trabajo extra innecesario.</member>
|
|
<member>La recolección de basura se realiza a petición del usuario, y este puede experimentar una demora.</member>
|
|
</simplelist>
|
|
<simpara>
|
|
Para sistemas de producción, se recomienda deshabilitar la
|
|
recolección de basura basada en probabilidad configurando
|
|
<link linkend="ini.session.gc-probability">session.gc_probability</link> en <literal>0</literal>
|
|
y activar explícitamente el recolector de basura periódicamente, por ejemplo, utilizando "cron" en
|
|
sistemas tipo UNIX para ejecutar un script que llame a <function>session_gc</function>.
|
|
</simpara>
|
|
|
|
<note>
|
|
<simpara>
|
|
Al llamar a <function>session_gc</function> desde un script PHP de línea de comandos,
|
|
<link linkend="ini.session.save-path">session.save_path</link> debe tener
|
|
el mismo valor que las solicitudes web, y el script debe tener permisos de acceso y eliminación
|
|
para los archivos de sesión. Esto puede verse afectado por el usuario con el que se ejecuta el script
|
|
y por características de contenedor o aislamiento, como la opción <literal>PrivateTmp=</literal>
|
|
de systemd.
|
|
</simpara>
|
|
</note>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
&no.function.parameters;
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<simpara>
|
|
<function>session_gc</function> devuelve el número de datos de sesión eliminados
|
|
en caso de éxito, &return.falseforfailure;.
|
|
</simpara>
|
|
<note>
|
|
<simpara>
|
|
Los antiguos gestores de almacenamiento de sesiones no devuelven el número de entradas de sesión eliminadas, sino
|
|
solo un indicador de éxito/fracaso. En este caso, se devuelve <literal>1</literal> independientemente de
|
|
cuántas entradas de sesión se hayan eliminado realmente.
|
|
</simpara>
|
|
</note>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<example>
|
|
<title>Ejemplo de <function>session_gc</function> para planificadores de tareas como cron</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Nota: Este script debe ser ejecutado por el mismo usuario que el proceso del servidor web.
|
|
|
|
// Requiere la activación de las sesiones para inicializar el acceso al gestor de almacenamiento de sesiones
|
|
session_start();
|
|
|
|
// Ejecutar la recolección de basura inmediatamente
|
|
session_gc();
|
|
|
|
// Eliminar el ID de sesión creado por session_start()
|
|
session_destroy();
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Ejemplo de <function>session_gc</function> para scripts accesibles por el usuario</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Nota: Se recomienda que session_gc() sea utilizado por un planificador de tareas,
|
|
// pero puede ser utilizado de la siguiente manera.
|
|
|
|
// Utilizado para verificar la hora del último uso de la recolección de basura
|
|
$gc_time = '/tmp/php_session_last_gc';
|
|
$gc_period = 1800;
|
|
|
|
session_start();
|
|
// Ejecutar la recolección de basura solo cuando haya transcurrido el período.
|
|
// Es decir, llamar a session_gc() en cada solicitud es un desperdicio de recursos.
|
|
if (file_exists($gc_time)) {
|
|
if (filemtime($gc_time) < time() - $gc_period) {
|
|
session_gc();
|
|
touch($gc_time);
|
|
}
|
|
} else {
|
|
touch($gc_time);
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<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
|
|
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
|
|
-->
|