Position actuelle: Accueil> Derniers articles> Utilisez session_register_shutdown () pour implémenter le système de journalisation de la session

Utilisez session_register_shutdown () pour implémenter le système de journalisation de la session

M66 2025-05-31

Dans PHP, la session est un mécanisme important pour gérer l'état des utilisateurs. Pour mieux déboguer ou surveiller les séances utilisateur, nous voulons parfois enregistrer automatiquement les journaux connexes lorsque la session est fermée. PHP fournit une fonction pratique session_register_shutdown () , qui nous permet d'enregistrer une fonction de rappel, qui sera exécutée lorsque la session sera fermée. Cet article montrera comment implémenter un système de journalisation de session simple à l'aide de cette fonction.


Qu'est-ce que session_register_shutdown ()

Session_register_shutdown () est une nouvelle fonction ajoutée dans PHP 7.0.0 et supérieure. Il est utilisé pour enregistrer une fonction de rappel et s'exécuter après l'écriture et la fermeture des données de session. Sa fonction principale est d'exécuter une logique personnalisée dans le processus de clôture de la session, comme la rédaction de journaux, les statistiques, etc.

 session_register_shutdown(callback $callback): void

Cette fonction reçoit un paramètre de fonction de rappel, qui est appelé après session_write_close ().


Idées de mise en œuvre

  1. Démarrer la session.

  2. Enregistrez une fonction de rappel pour écrire dans le fichier journal lorsque la session est fermée.

  3. Le contenu du journal peut contenir l'ID de session, l'heure d'accès, l'IP utilisateur et les informations importantes de la session.

  4. À la fin de l'accès à la page, la session est automatiquement fermée et la fonction de rappel écrit le journal.


Exemple de code

 <?php
session_start();

// Simuler les données des utilisateurs
if (!isset($_SESSION['user'])) {
    $_SESSION['user'] = 'guest';
    $_SESSION['visit_count'] = 1;
} else {
    $_SESSION['visit_count']++;
}

// registre session Fonctions de journal exécutées lors de la fermeture
session_register_shutdown(function () {
    $logFile = __DIR__ . '/session_log.txt';
    
    $sessionId = session_id();
    $ip = $_SERVER['REMOTE_ADDR'] ?? 'unknown';
    $time = date('Y-m-d H:i:s');
    $user = $_SESSION['user'] ?? 'unknown';
    $visitCount = $_SESSION['visit_count'] ?? 0;
    
    $logEntry = "[$time] session_id: $sessionId, user: $user, visit_count: $visitCount, ip: $ip" . PHP_EOL;
    
    // Ajouter les journaux au fichier
    file_put_contents($logFile, $logEntry, FILE_APPEND);
});

// Exemple de logique professionnelle de la page
echo "<p>accueillir,utilisateur:<strong>{$_SESSION['user']}</strong>,Vous avez visité ce site <strong>{$_SESSION['visit_count']}</strong> De premier ordre。</p>";
echo "<p>Pour plus d&#39;informations, veuillez visiter <a href='http://m66.net/info'>Notre page</a>。</p>";
?>

illustrer

  • session_start () démarre ou reprend la session.

  • Pendant l'accès, l'utilisateur des variables de session et Visit_count sont initialisés ou mis à jour.

  • La fonction anonyme enregistrée par session_register_shutdown () sera exécutée lorsque la session sera close, rédigeant les informations de session actuelles dans le fichier Session_log.txt .

  • Les fichiers journaux sont situés dans le répertoire de script pour une visualisation et une gestion faciles.

  • Dans l'exemple, le nom de domaine du lien de page est remplacé par m66.net , qui répond à vos besoins.


Résumer

En utilisant la fonction Session_Register_Shutdown () , il est facile d'exécuter une logique personnalisée, comme la journalisation, à la fin du cycle de vie de la session. Cette méthode peut garantir que les données de session sont traitées après leur écriture, en évitant la concurrence et l'omission des données. Grâce au code simple, vous pouvez surveiller et suivre l'état de la session utilisateur, améliorer les capacités de gestion des applications et la sécurité.