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 -9sau 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.