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 de réaliser des traitements hors transaction HTTP.
Voici un exemple plus parlant :
Le navigateur demande une page PHP au serveur Web, celui réalise l'appel à deux fonctions PHP pour produire la page demandée par le navigateur.
- La fonction 1 finit son traitement en 100 ms
- La fonction 2 finit 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.
Voici un exemple d'utilisation de la fonction ''register_shutdown_function'' :
- La fonction 1 finit son traitement en 100 ms
- La page est retournée au client
- La fonction 2 finit son traitement en 200 ms après que la page ait été retournée au client.
<?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 suite à un ''exit()'' ou un ''die()''.
Ceci permet d'éviter de faire attendre un client sur des traitements qui n'auront aucun effet sur le résultat de sa demande.
Cette fonction est donc très utile pour :
- La suppression de ressources temporaires
- La fermeture de socket ou de connexion à la base.
- Le logging
''Remarque : cette fonction ne fonctionne pas sous Windows.''