Astuce PHP : La fonction register_shutdown_function
Rares sont les personnes qui connaissent la fonction register_shutdown_function, et pourtant, elle est très utile.
https://fr2.php.net/register_shutdown_function
Elle permet d’exécuter des traitements hors transaction HTTP.
Un exemple plus parlant
Le navigateur demande une page PHP au serveur web, qui réalise l'appel à deux fonctions PHP pour produire la page demandée.
- La fonction 1 termine son traitement en 100 ms
- La fonction 2 termine son traitement en 200 ms

<?php
function fonction1()
{
// TODO
}
function fonction2()
{
// TODO
}
fonction1();
fonction2();
?>
La page sera alors délivrée au client en 300 ms.
Exemple avec register_shutdown_function
- La fonction 1 termine son traitement en 100 ms
- La page est retournée au client
- La fonction 2 termine son traitement en 200 ms, après que la page a été retournée

<?php
function fonction1()
{
// TODO
}
function fonction2()
{
// TODO
}
register_shutdown_function("fonction2");
fonction1();
?>
La page sera alors délivrée au client en 100 ms.
L’avantage de cette fonction est de pouvoir exécuter un traitement lorsque le script PHP s’arrête, notamment après un appel à exit() ou die().
Cela permet d’éviter de faire attendre inutilement un client pour des traitements qui n’ont aucun impact sur la réponse.
Cette fonction est donc très utile pour :
- La suppression de ressources temporaires
- La fermeture de sockets ou de connexions à une base
- Le logging
🧠 Remarque : cette fonction ne fonctionne pas sous Windows.
