PHP - register_shutdown_function ()

La fonction register_shutdown_function () peut enregistrer une fonction pour exécution à l'arrêt.

Syntaxe

void register_shutdown_function( callable $callback [, mixed $parameter [, mixed $... ]] )

La fonction register_shutdown_function () peut enregistrer une fonction nommée par fonction à exécuter lorsque le traitement du script est terminé. Plusieurs appels à une fonction register_shutdown_function () peuvent être effectués, et chacun peut être appelé dans le même ordre que celui enregistré. Si nous appelons la fonction exit () dans une fonction d'arrêt enregistrée, le traitement peut s'arrêter complètement et aucune autre fonction d'arrêt enregistrée ne peut être appelée.

La fonction register_shutdown_function () ne renvoie aucune valeur. Si le rappel passé n'est pas appelable, une erreur de niveau "E_WARNING" peut être générée.

Exemple 1

<?php
   function say_goodbye() {
      echo "Goodbye!\n";
   }

   register_shutdown_function("say_goodbye");
   echo "Hello!\n";
?>

Production

Hello!
Goodbye!

Exemple 2

<?php
   function say_goodbye() {
      if(connection_status() == CONNECTION_TIMEOUT) {
         print "Script timeout!\n";
      } else {
         print "Goodbye!\n";
      }
   }

   register_shutdown_function("say_goodbye");
   set_time_limit(1);
   print "Sleeping...\n";
   sleep(1);
   print "Done!\n";
?>

Production

Sleeping...
Done!
Goodbye!

Exemple 3

<?php 
   class TestDemo { 
      public function __construct() { 
         register_shutdown_function([$this, "f"], "hello"); 
      } 
 
      public function f($str) { 
         echo "class TestDemo->f():" . $str; 
      } 
   } 
 
   $demo = new TestDemo(); 
   echo "before" . PHP_EOL; 
?>

Production

before
class TestDemo->f():hello