session_gc

(PHP 7 >= 7.1.0, PHP 8)

session_gcEjecuta la recolección de basura de los datos de sesión

Descripción

session_gc(): int|false

session_gc() se utiliza para ejecutar la recolección de basura (Garbage Collection, abreviado GC). PHP utiliza un método probabilístico para ejecutar la recolección de basura de sesión por defecto.

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 tiene parámetros.

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);
}
?>

Ver también