register_shutdown_function
(PHP 4, PHP 5, PHP 7, PHP 8)
register_shutdown_function — Enregistre une fonction de rappel pour exécution à l'extinction
Description
Plusieurs appels à register_shutdown_function() sont
possibles dans le même script, et les fonctions seront appelées dans le
même ordre que celui dans lequel elles sont enregistrées. Si l'on appelle
exit()
durant l'une des fonctions d'extinction, le processus sera définitivement
arrêté, sans que les autres fonctions soient appelées.
Les fonctions d'arrêt peuvent également appeler la fonction
register_shutdown_function() elles-mêmes pour ajouter une
fonction d'arrêt à la fin de la file d'attente.
Liste de paramètres
callback
-
La fonction de rappel à enregistrer.
La fonction de rappel est exécutée comme faisant partie de la
requête, aussi, il est possible d'envoyer quelque chose à la sortie
depuis cette dernière, puis d'accéder aux buffers de sortie.
args
-
Il est possible de passer des paramètres aux fonctions d'extinction
en configurant ces paramètres supplémentaires.
Valeurs de retour
Aucune valeur n'est retournée.
Exemples
Exemple #1 Exemple avec register_shutdown_function()
<?php
function shutdown()
{
// Voici notre fonction shutdown
// dans laquelle nous pouvons faire
// toutes les dernières opérations
// avant la fin du script.
echo 'Script exécuté avec succès', PHP_EOL;
}
register_shutdown_function('shutdown');
?>
Notes
Note:
Le dossier de travail du script peut changer dans la fonction d'extinction
sous quelques serveurs web, par exemple Apache.
Note:
Les fonctions d'extinction ne sont pas exécutées si le processus est tué
avec un signal SIGTERM ou SIGKILL. Bien qu'il ne soit pas possible d'intercepter
un SIGKILL, il est possible d'utiliser la fonction pcntl_signal()
pour installer un gestionnaire pour un SIGTERM qui utilisera la fonction
exit() pour mettre fin proprement.
Note:
Les fonctions d'arrêt s'exécutent séparément du temps suivi par
max_execution_time. Cela signifie
que même si un processus est terminé pour avoir fonctionné trop longtemps, les
fonctions d'arrêt sont toujours appelées. De plus, si le
max_execution_time atteint sa limite pendant qu'une fonction
d'arrêt est en cours d'exécution, elle n'est pas interrompue.