(PHP 4, PHP 5, PHP 7, PHP 8)
register_shutdown_function — Enregistre une fonction de rappel pour exécution à l'extinction
Enregistre une fonction de rappel callback
pour exécution à l'extinction ou lorsque
exit() est appelé.
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 vous appelez 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.
callback
La fonction de rappel à enregistrer.
La fonction de rappel est exécuté comme faisant parti de la requête, aussi, il est possible d'envoyer quelque à 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.
Aucune valeur n'est retournée.
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');
?>
Note:
Le dossier de travail du script peut changer dans la fonction d'extinction sous quelques serveurs web, e.g. Apache.
Note:
Les fonctions d'extinction ne seront pas exécutées si le processus est tué avec un signal SIGTERM ou SIGKILL. Bien que vous ne pouvez pas intercepter un SIGKILL, vous pouvez 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 seront 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 ne sera pas interrompue.