(PHP 4, PHP 5, PHP 7, PHP 8)
register_shutdown_function — Registriert eine Funktion zur Ausführung beim Skript-Abschluss
Registriert ein callback
, welches ausgeführt werden
soll, sobald die Ausführung des Skripts endet oder wenn
exit() aufgerufen wird.
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.
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.
Es wird kein Wert zurückgegeben.
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');
?>
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.