session_gc
(PHP 7 >= 7.1.0, PHP 8)
session_gc — Exécute le ramasse miette des données de session
Description
Le ramassage de miette (GC) basé sur une méthode probabiliste fonctionne
quelque peu mais a quelques problèmes. 1) Les données de session des sites à
faible traffic ne seront peut être pas supprimés durant la durée préféré.
2) Les sites à fort traffic exécuteront potentiellement le ramasse miette
à une trop grande fréquence. 3) Le ramasse miette est exécuté sur une requête
utilisateur et celui-ci ressentira une latence due au ramasse miette.
Par conséquent, il est recommandé d'exécuter le ramasse miette périodiquement sur
les systèmes de productions, par exemple, "cron" pour les systèmes de type UNIX.
Assurez-vous de désactiver le ramasse miette à méthode probabiliste en définissant
session.gc_probability
à 0.
Liste de paramètres
Cette fonction ne contient aucun paramètre.
Valeurs de retour
session_gc() retourne le nombre de données de session
effacé en tant que succès, false
en cas d'échec.
Les anciens gestionnaire de sauvegarde ne retourne pas le nombre de données
de session effacé mais seulement le drapeau de succès/échec. Dans ce cas là,
le nombre de données de session effacé est 1 quelque soit le nombre actuel
de données effacé.
Exemples
Exemple #1 Exemple de session_gc() pour les planificateurs de tâches comme cron
<?php
// Note: Ce script devrait être exécuté par le même utilisateur que le processus du serveur web.
// Nécessite l'activation des sessions pour initialiser l'accès au gestionnaire de sauvegarde des sessions
session_start();
// Exécuter le Ramasse Miette immédiatement
session_gc();
// Effacer l'ID de session créé par session_gc()
session_destroy();
?>
Exemple #2 Exemple de session_gc() pour des scripts accessible par l'utilisateur
<?php
// Note: il est recommandé que session_gc() soit utilisé par un planificateur de tâches,
// mais il peut être utilisé de la façon suivante.
// Utilisé pour vérifier l'heure de la dernière utilisation du ramasse miette
$gc_time = '/tmp/php_session_last_gc';
$gc_period = 1800;
session_start();
// Exécuter le ramasse miette seulement quand la période s'est écoulée.
// Appeler session_gc() à chaque requête est un gaspillage de ressource.
if (file_exists($gc_time)) {
if (filemtime($gc_time) < time() - $gc_period) {
session_gc();
touch($gc_time);
}
} else {
touch($gc_time);
}
?>