Geeek.org 🗲 Blog Geek & High Tech 100% Indépendant

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

phpregistershutdownfunctionuml1.gif

<?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

phpregistershutdownfunctionuml2.gif

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


Vous êtes correctement abonné à Geeek
Bienvenue ! Vous êtes correctement connecté.
Parfait ! Vous êtes correctement inscrit.
Votre lien a expiré
Vérifiez vos emails et utiliser le lien magique pour vous connecter à ce site