Dans le développement de PHP, il est très important de gérer les opérations lorsqu'un programme est fermé, en particulier la version des ressources et le stockage de données. Les deux fonctions session_register_shutdown () et registre_shutdown_function () sont souvent mentionnées, mais leurs fonctions, leurs scénarios d'utilisation et applicables sont différentes. Cet article présentera ses différences, ses connexions et leur application en détail.
Il s'agit d'une fonction commune fournie par PHP, qui est utilisée pour enregistrer une fonction de rappel, qui est automatiquement appelée après l'exécution du script PHP. Vous pouvez enregistrer plusieurs rappels et l'ordre d'enregistrement détermine l'ordre de l'appel.
Exemple de code:
<?php
register_shutdown_function(function() {
echo "Le script est exécuté,Effectuer une opération de nettoyage。";
});
?>
Lorsque le script PHP est exécuté, cette fonction de rappel enregistrée sera exécutée, qu'elle se termine normalement ou qu'une erreur fatale se produit.
Il s'agit d'une fonction spécifiquement utilisée pour le module de session. Il appelle register_shutdown_function () en interne et enregistre automatiquement la fonction de gestionnaire d'arrêt de session pour s'assurer que PHP ferme correctement et enregistre correctement les données de session à la fin du script.
Après PHP 5.4, cette fonction a été marquée comme rejetée et n'est pas recommandée pour continuer à l'utiliser.
Exemple de code:
<?php
session_start();
session_register_shutdown();
$_SESSION['name'] = 'Zhang San';
?>
Après avoir été appelé, le module de session effectuera automatiquement une opération d'écriture à la fin du script.
aspect | session_register_shutdown () | registre_shutdown_function () |
---|---|---|
Positionnement fonctionnel | Spécifiquement utilisé pour enregistrer automatiquement les fonctions de fermeture de session | Général, enregistrez les fonctions de rappel appelé lors de la fermeture d'un script |
paramètre | L'inscription est automatiquement terminée en interne sans paramètres | La fonction de rappel doit être adoptée, plusieurs paramètres peuvent être passés |
Gamme d'utilisation | Module de session uniquement | Rappel étroit arbitraire pour les scripts |
compatibilité | PHP 5.4 est abandonné et non recommandé | Support commun pour les versions PHP modernes |
Temps d'action | Lorsque le script est fermé, assurez-vous que les données de session sont écrites. | Appel des fonctions de rappel définies par l'utilisateur lorsque le script est fermé |
Session_register_shutdown () est en fait une encapsulation de registre_shutdown_function () , spécifiquement utilisé pour garantir que les données de session peuvent être écrites en toute sécurité à la fin du script. Les deux sont déclenchés pendant la phase d'arrêt du flux d'exécution PHP et appartiennent au mécanisme du crochet d'arrêt de script.
Autrement dit:
Session_register_shutdown () = registre_shutdown_function () + Session Close Logic
Utiliser session_register_shutdown () pour permettre aux développeurs de gérer manuellement les opérations d'écriture de session
La journalisation, les ressources de nettoyage, la fermeture des connexions de la base de données et d'autres opérations sont nécessaires à la fin du script.
Opérations de suites effectuées après la gestion des exceptions ou des erreurs mortelles.
Personnalisez toute fonction qui doit être exécutée lorsque le script est fermé.
Exemple:
<?php
register_shutdown_function(function() {
error_log("Fin de l'exécution du script,Écrire pour enregistrer");
});
?>
Convient uniquement pour la session d'enregistrement automatique Écriture de vieilles versions de PHP (5.3 et avant).
Il n'est pas recommandé d'utiliser la nouvelle version. Il est recommandé d'appeler session_write_close () ou de s'appuyer sur PHP pour écrire automatiquement.
fonction | Recommandé | Fonctions principales | Recommandations pour une utilisation |
---|---|---|---|
session_register_shutdown () | Pas recommandé | Enregistrez automatiquement le rappel d'écriture de session | Utilisé uniquement pour la compatibilité avec les anciennes versions, obsolètes des projets modernes |
registre_shutdown_function () | recommander | Enregistrez n'importe quel script pour fermer la fonction de rappel | Portée de l'application large, flexible et stable |
Dans le développement de PHP moderne, il est recommandé d'utiliser Session_Write_Close () directement lors de la gestion des écritures de session. Pour d'autres travaux de nettoyage lors de la fermeture, registre_shutdown_function () est recommandé pour garantir la compatibilité et la flexibilité du code.
Si le code implique des URL, par exemple:
<?php
echo "Visitez le site Web: http://example.com/path";
?>
Il doit être remplacé par: