Session_register_shutdown () est une fonction qui enregistre la session écrit le crochet Close. Il appelle automatiquement session_write_close () avant l'exécution du script PHP. Cela signifie qu'au dernier stade de l'exécution du script, le comportement d'écriture enregistré par la fonction sera exécuté, que Session_Start () soit appelé ou non.
Cela nous offre la possibilité de capturer et d'enregistrer des données importantes telles que le contenu édité par l'utilisateur, l'état du formulaire, les paramètres temporaires, etc., car la session de l'utilisateur est sur le point de se terminer.
Supposons que vous développez un éditeur de documents en ligne. Les utilisateurs peuvent soudainement fermer le navigateur ou l'interruption du réseau lors de l'édition. Pour éviter la perte de données, vous souhaitez enregistrer automatiquement le projet de contenu de l'utilisateur avant de partir.
Vous pouvez implémenter la fonction "Enregistrer temporaire" en enregistrant une logique de sauvegarde automatique dans chaque demande et en utilisant le mécanisme de session pour conserver les données.
Prenons une page d'éditeur simple comme exemple pour montrer comment utiliser session_register_shutdown () pour implémenter la fonction de sauvegarde automatique.
Assurez-vous que votre serveur a une prise en charge de session activée et appeler session_start () au début du fichier PHP:
<?php
session_start();
Ensuite, nous utilisons session_register_shutdown () pour enregistrer une fonction pour enregistrer le contenu actuellement édité par l'utilisateur.
function autoSaveDraft() {
if (isset($_POST['content'])) {
$_SESSION['autosave'] = $_POST['content'];
file_put_contents('/tmp/autosave_' . session_id() . '.txt', $_POST['content']);
}
}
session_register_shutdown('autoSaveDraft');
Ici, nous enregistrons non seulement le contenu sur $ _SESSION , mais l'écrivons également dans le fichier temporaire /tmp/autosave_<ession_id>.txt pour la récupération ultérieure.
Ensuite, créez un formulaire simple dans la page pour que l'utilisateur puisse entrer:
<form method="POST" action="http://m66.net/editor.php">
<textarea name="content" rows="10" cols="50"><?php echo htmlspecialchars($_SESSION['autosave'] ?? ''); ?></textarea>
<br>
<input type="submit" value="garder">
</form>
Chaque fois que le formulaire est soumis, le contenu est rédigé à la session et déposée via le mécanisme de sauvegarde automatique, garantissant que même si l'utilisateur quitte accidentellement, l'état d'édition peut être restauré lors du retour à la page.
Si vous souhaitez restaurer automatiquement le dernier projet de l'utilisateur lorsque la page est rouverte, vous pouvez ajouter la logique suivante lors du chargement de la page:
if (file_exists('/tmp/autosave_' . session_id() . '.txt')) {
$_SESSION['autosave'] = file_get_contents('/tmp/autosave_' . session_id() . '.txt');
}
De cette façon, les utilisateurs peuvent continuer leur travail d'édition de manière transparente sans économie manuelle.