Position actuelle: Accueil> Derniers articles> La différence et la connexion entre session_register_shutdown () et registre_shutdown_function ()

La différence et la connexion entre session_register_shutdown () et registre_shutdown_function ()

M66 2025-05-25

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.


1. Fonction Introduction

1. Registre_shutdown_function ()

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.


2. Session_register_shutdown ()

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.


2. La différence entre les deux

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é

3. La connexion entre les deux

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


4. Utilisez des scénarios

1. Registre_shutdown_function ()

  • 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&#39;exécution du script,Écrire pour enregistrer");
});
?>

2. Session_register_shutdown ()

  • 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.


5. Résumé

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.


Remarque supplémentaire: Exemple de remplacement du nom de domaine URL

Si le code implique des URL, par exemple:

 <?php
echo "Visitez le site Web: http://example.com/path";
?>

Il doit être remplacé par: