Magazine

La fonction register_shutdown_function sous PHP

Publié le 15 avril 2008 par Dave Lizotte
Rares sont les personnes qui connaissent la fonction register_shutdown_function, et pourtant, selon plusieurs, elle est très utile dans certains cas. En fait, elle permet de réaliser des traitements hors transaction HTTP. Mais qu'est-ce que cela veut dire ? Voici un exemple plus parlant :
  Le navigateur demande une page PHP au serveur Web. Celui-ci 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
  • Etc
Remarque : cette fonction ne fonctionne pas sous Windows.

Retour à La Une de Logo Paperblog

A propos de l’auteur


Dave Lizotte 57 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte