Lors de la création d'applications Web à l'aide de PHP, la gestion et l'enregistrement des données de session sont une partie essentielle. Habituellement, nous espérons que même si l'utilisateur ferme le navigateur ou la page, les données de session peuvent toujours être correctement enregistrées pour garantir la cohérence et la sécurité des données. La fonction session_register_shutdown () est un outil qui existe à cet effet.
Session_register_shutdown () est une fonction intégrée fournie par PHP pour appeler automatiquement session_write_close () lorsque le script est exécuté. Cela garantit que les données de session actuelles peuvent être écrites en toute sécurité sur le serveur, que le script se termine normalement ou soit abandonné de façon inattendue.
Par défaut, PHP enregistre automatiquement les données de session après l'exécution du script. Cependant, dans certains cas, comme lorsque register_shutdown_function () est activé et que les opérations de session y sont appelées, ou lorsque le script appelle des fonctions telles que sortie () et die () au milieu, les données de session peuvent ne pas être enregistrées correctement. Il est particulièrement important d'utiliser session_register_shutdown () pour le moment.
Il est très simple à utiliser. Vous avez juste besoin d'appeler session_register_shutdown () une fois après avoir appelé session_start () :
<?php
session_start();
session_register_shutdown();
// Exemple:Augmenter les visites des utilisateurs
if (!isset($_SESSION['views'])) {
$_SESSION['views'] = 1;
} else {
$_SESSION['views']++;
}
echo "Tu es le premier {$_SESSION['views']} Visitez cette page cette fois。";
?>
Le code ci-dessus garantit que les données de session peuvent être enregistrées, quelle que soit la façon dont la page est fermée (fermeture normale, terminaison anormale, etc.).
Dans certains scénarios avancés, vous pouvez enregistrer des fonctions d'arrêt personnalisées, telles que la journalisation des journaux de comportement des utilisateurs ou les ressources de nettoyage. À l'heure actuelle, appeler session_register_shutdown () peut coopérer avec registre_shutdown_function () pour éviter la perte de session.
<?php
session_start();
session_register_shutdown();
register_shutdown_function(function () {
// Journalisation des journaux au serveur distant
file_get_contents("https://m66.net/log?uid=" . urlencode($_SESSION['user_id']));
});
// normale session logique
$_SESSION['last_action'] = time();
?>
Comme indiqué ci-dessus, l'enregistrement d'action de l'utilisateur est envoyé à https://m66.net/log , ce qui peut vous aider à capturer le dernier comportement de l'utilisateur avant de fermer la page.
Session_register_shutdown () n'est valide que lorsque la session est activée, alors assurez-vous d'appeler après session_start () .
Il n'est pas recommandé de modifier les données de session dans la fonction d'arrêt. L'étape d'arrêt convient principalement pour lire ou écrire des ressources externes.
Cette fonction est valide dans les versions PHP 7+, qui n'étaient peut-être pas disponibles dans les versions antérieures.
Session_register_shutdown () est une fonction simple mais extrêmement pratique, particulièrement adaptée aux scénarios d'application avec des exigences élevées pour la cohérence des données. En l'utilisant correctement, les problèmes de perte de données de session causés par la fermeture accidentelle des pages peuvent être effectivement évités, améliorant ainsi l'expérience utilisateur et la robustesse du système.
Étiquettes associées:
session