session_gc
(PHP 7 >= 7.1.0, PHP 8)
session_gc — Ejecuta la recolección de basura de los datos de sesión
Descripción
La recolección de basura (GC) basada en un método probabilístico funciona
en cierta medida pero presenta algunos problemas. 1) Los datos de sesión de los sitios con
poco tráfico pueden no ser eliminados durante el período deseado.
2) Los sitios con mucho tráfico pueden ejecutar la recolección de basura con demasiada frecuencia.
3) La recolección de basura se ejecuta en una solicitud del usuario y este notará una latencia debido a la recolección de basura.
Por lo tanto, se recomienda ejecutar la recolección de basura periódicamente en
los sistemas de producción, por ejemplo, "cron" para los sistemas de tipo UNIX.
Asegúrese de desactivar la recolección de basura por método probabilístico definiendo
session.gc_probability
a 0.
Parámetros
Esta función no contiene ningún parámetro.
Valores devueltos
session_gc() devuelve el número de datos de sesión
eliminados como éxito, false
en caso de fallo.
Los antiguos gestores de almacenamiento no devuelven el número de datos de sesión eliminados
sino solo el flag de éxito/fallo. En este caso, el número de datos de sesión eliminados es 1
independientemente del número real de datos eliminados.
Ejemplos
Ejemplo #1 Ejemplo de session_gc() para planificadores de tareas como cron
<?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_gc()
session_destroy();
?>
Ejemplo #2 Ejemplo de session_gc() para scripts accesibles por el usuario
<?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.
// 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);
}
?>