register_shutdown_function
(PHP 4, PHP 5, PHP 7, PHP 8)
register_shutdown_function — Registriert eine Funktion zur Ausführung beim Skript-Abschluss
Beschreibung
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.
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.
Fehler/Exceptions
Wenn das übergebene Callback nicht aufrufbar ist, wird ein Fehler der Stufe
E_WARNING
erzeugt.
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.
Siehe auch
- auto_append_file
- exit() - Gibt eine Meldung aus und beendet das aktuelle Skript
- fastcgi_finish_request() - Flushes all response data to the client
- Den Abschnitt über Verbindungssteuerung