1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-28 17:43:11 +02:00
Files
Marcos Porto Mariño cfd4751d62 Various updates, up to EN 1c9fb12 (#315)
* 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
2025-11-14 08:47:33 +01:00

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