Scope::finally
(PHP 8.6+, True Async 1.0)
public function finally(\Closure $callback): void
Registriert eine Callback-Funktion, die beim Abschluss des Scopes ausgefuehrt wird. Dies ist das Aequivalent eines finally-Blocks fuer einen Scope und garantiert, dass Bereinigungscode unabhaengig davon ausgefuehrt wird, wie der Scope beendet wurde (normal, durch Abbruch oder mit einem Fehler).
Parameter
callback — die Closure, die beim Abschluss des Scopes aufgerufen wird.
Rueckgabewert
Es wird kein Wert zurueckgegeben.
Beispiele
Beispiel #1 Ressourcenbereinigung
<?php
use Async\Scope;
$scope = new Scope();
$scope->finally(function() {
echo "Scope abgeschlossen, Ressourcen werden bereinigt\n";
// Verbindungen schliessen, temporaere Dateien loeschen
});
$scope->spawn(function() {
echo "Aufgabe wird ausgefuehrt\n";
});
$scope->awaitCompletion();
// Ausgabe: "Aufgabe wird ausgefuehrt"
// Ausgabe: "Scope abgeschlossen, Ressourcen werden bereinigt"
Beispiel #2 Mehrere Callbacks
<?php
use Async\Scope;
$scope = new Scope();
$scope->finally(function() {
echo "Datenbankverbindung wird geschlossen\n";
});
$scope->finally(function() {
echo "Metriken werden geschrieben\n";
});
$scope->spawn(function() {
\Async\delay(1000);
});
$scope->dispose();
// Beide Callbacks werden beim Abschluss des Scopes aufgerufen
Siehe auch
- Scope::dispose — Den Scope schliessen
- Scope::isFinished — Pruefen, ob der Scope beendet ist
- Coroutine::finally — Callback bei Koroutinen-Abschluss