register_shutdown_function în PHP

Înregistrează o funcție care rulează la sfârșitul scriptului, inclusiv după exit sau după o eroare fatală.

Sintaxă
register_shutdown_function(callable $callback, mixed ...$args): void

Ce face register_shutdown_function

Funcțiile înregistrate rulează după ce scriptul s-a terminat, în ordinea înregistrării. Rulează și după exit, după o excepție neprinsă și după majoritatea erorilor fatale, deci sunt locul potrivit pentru curățenie (fișiere temporare, blocări) și pentru raportarea erorilor fatale cu error_get_last.

Argumentele de după funcție îi sunt transmise la apel.

Parametri

Parametru Descriere
$callback Funcția care rulează la final.
$args Opțional. Argumentele transmise funcției.

Ce returnează

Nimic.

Exemple

Exemplul 1: Ordinea de execuție

<?php
register_shutdown_function(function (string $fisier) {
    @unlink($fisier);
    echo "Am șters $fisier\n";
}, "import.tmp");

register_shutdown_function(fn() => print("Durata: sub o secundă\n"));

file_put_contents("import.tmp", "date");
echo "Import terminat\n";
exit;

Rezultat

Import terminat
Am șters import.tmp
Durata: sub o secundă

Greșeli frecvente

  • Te aștepți ca funcția să ruleze și când scriptul este oprit forțat (de exemplu kill -9 sau o cădere a serverului). În aceste cazuri nu mai rulează nimic.

Comenzi înrudite

  • error_get_last: Returnează ultima eroare apărută (tip, mesaj, fișier, linie), chiar dacă a fost ascunsă cu @.
  • exit / die: Oprește imediat scriptul. Poate afișa un mesaj înainte sau poate da un cod de ieșire. die este același lucru.
  • set_exception_handler: Setează funcția care rulează când o excepție nu este prinsă de niciun bloc catch.