register_shutdown_function
(PHP 4, PHP 5, PHP 7, PHP 8)
register_shutdown_function — Registriert eine Funktion zur Ausführung beim Skript-Abschluss
Beschreibung
register_shutdown_function() kann mehrmals
hintereinander aufgerufen werden, und die Funktionen werden in derselben
Reihenfolge aufgerufen, wie sie registriert wurden. Wenn
exit() innerhalb einer registrierten Shutdown-Funktion
aufgerufen wird, bricht die Ausführung vollständig ab und keine weiteren
registrierten Shutdown-Funktionen werden ausgeführt.
Shutdown-Funktionen können außerdem selbst
register_shutdown_function() aufrufen, um eine
Shutdown-Funktion am Ende der Warteschlange hinzuzufügen.
Parameter-Liste
callback
-
Das Shutdown-Callback, welches registriert werden soll.
Die Shutdown-Callbacks werden als Teil der Anfrage ausgeführt, d. h. es
ist möglich, Ausgaben zu senden und auf Ausgabepuffer zuzugreifen.
args
-
Hier können zusätzliche Parameter an die Shutdown-Funktion übergeben
werden.
Rückgabewerte
Es wird kein Wert zurückgegeben.
Beispiele
Beispiel #1 register_shutdown_function()-Beispiel
<?php
function shutdown()
{
// Das ist unsere Shutdown-Funktion, in welcher
// wir noch letzte Anweisungen ausführen können
// bevor die Ausführung beendet wird.
echo 'Skript erfolgreich ausgeführt', PHP_EOL;
}
register_shutdown_function('shutdown');
?>
Anmerkungen
Hinweis:
Das Arbeitsverzeichnis des Skripts kann sich bei manchen Webservern, z. B.
Apache, innerhalb des Shutdown-Callbacks ändern.
Hinweis:
Shutdown-Funktionen werden nicht ausgeführt, wenn der Prozess mit einem
SIGTERM- oder SIGKILL-Signal terminiert wurde. Ein SIGKILL kann zwar nicht
abgefangen werden, aber dafür kann mittels
pcntl_signal() ein Handler für SIGTERM registriert
werden, der exit() für einen sauberen Abbruch
verwendet.
Hinweis:
Shutdown-Funktionen laufen getrennt von der Zeit, die von
max_execution_time gemessen
wird. Das bedeutet, dass die Shutdown-Funktionen auch dann noch aufgerufen
werden, wenn ein Prozess beendet wird, weil er zu lange läuft. Außerdem
wird eine laufende Shutdown-Funktion nicht beendet, wenn währenddessen die
max_execution_time
abläuft.