En PHP, les séances de gestion sont une exigence commune lors du développement de sites Web dynamiques. Habituellement, nous devons appeler session_write_close () à la fin du script pour écrire et fermer les données de session pour éviter la perte ou le verrouillage des données. Cependant, appeler manuellement session_write_close () est à la fois lourd et facile à oublier. Heureusement, PHP fournit la fonction Session_Register_Shutdown () , qui peut enregistrer automatiquement une fonction de rappel pour fermer la session, nous aidant à simplifier ce processus.
Cet article expliquera en détail comment utiliser session_register_shutdown () pour appeler automatiquement session_write_close () , et démontrer l'implémentation spécifique en combinaison avec un exemple de code.
Par défaut, les données de session PHP sont automatiquement écrites et fermées à la fin du script, mais dans certains scénarios complexes, comme lorsque le script a des exécutions longues ou des demandes simultanées, l'appel manuellement session_write_close () peut être fait:
Libérez le verrouillage de la session à l'avance pour éviter de bloquer d'autres demandes;
Assurer que les données de session sont écrites dans le temps et améliorer la cohérence des données;
Évitez la perte causée par le fait de ne pas écrire de données à la fin du script.
Cependant, il est très gênant d'appeler manuellement à chaque fois, afin que nous puissions utiliser session_register_shutdown () pour terminer automatiquement cette étape.
Session_register_shutdown () est une fonction introduite par PHP depuis la version 7.0.0 pour enregistrer une fonction de rappel qui est automatiquement exécutée lors des demandes de PHP. Avec lui, les opérations de fermeture de session peuvent être effectuées automatiquement sans appeler explicitement dans le code.
Le prototype de fonction est le suivant:
bool session_register_shutdown ( void )
Après avoir été appelé, session_write_close () sera automatiquement exécuté à la fin du script.
Voici un exemple simple montrant comment fermer automatiquement une session à l'aide de session_register_shutdown () .
<?php
// Démarrer une session
session_start();
// Enregistrez une fonction de fermeture de session
session_register_shutdown();
// Définir les variables de session
$_SESSION['username'] = 'chatgpt';
// Simuler la logique commerciale
echo "Hello, " . $_SESSION['username'];
// Aucun appel manuel n'est requis ici session_write_close()
// Il sera appelé automatiquement à la fin du script
?>
Dans le code ci-dessus, après avoir appelé session_register_shutdown () , PHP appellera automatiquement session_write_close () à la fin de l'exécution du script pour s'assurer que les données de session sont enregistrées correctement et que le verrou est libéré.
Restrictions de version PHP
Session_register_shutdown () est pris en charge depuis PHP 7.0.0. Veuillez confirmer la version PHP avant utilisation.
Compatible avec l'ancienne version <br> Si vous devez être compatible avec PHP 5.x, vous pouvez obtenir des effets similaires via registre_shutdown_function ('session_write_close') :
<?php
session_start();
register_shutdown_function('session_write_close');
?>
Évitez les appels répétés <br> Une fois que session_register_shutdown () est appelée, session_write_close () n'est pas tenue d'appeler manuellement session_write_close () , sinon une erreur peut être causée.
L'utilisation de la fonction session_register_shutdown () permet à PHP d'appeler automatiquement session_write_close () à la fin du script, de simplifier le processus de gestion de la session et d'éviter les problèmes potentiels causés en oubliant de fermer la session. Il est particulièrement utile pour les projets qui doivent faire face à des scripts simultanés ou de longue durée.
Si votre version PHP est inférieure à 7,0, vous pouvez également obtenir le même effet via registre_shutdown_function ('session_write_close') .