Scope::finally
(PHP 8.6+, True Async 1.0)
php
public function finally(\Closure $callback): voidRegistriert 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
<?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(Async\timeout(5000));
// Ausgabe: "Aufgabe wird ausgefuehrt"
// Ausgabe: "Scope abgeschlossen, Ressourcen werden bereinigt"Beispiel #2 Mehrere Callbacks
php
<?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 aufgerufenSiehe auch
- Scope::dispose — Den Scope schliessen
- Scope::isFinished — Pruefen, ob der Scope beendet ist
- Coroutine::finally — Callback bei Koroutinen-Abschluss