Scope::disposeSafely
(PHP 8.6+, True Async 1.0)
php
public function disposeSafely(): voidSchliesst den Scope sicher. Aktive Koroutinen werden nicht abgebrochen, sondern werden zu Zombie-Koroutinen: Sie laufen weiter, aber der Scope gilt als geschlossen. Zombie-Koroutinen werden von selbst beendet, wenn sie ihre Arbeit abgeschlossen haben.
Wenn der Scope ueber asNotSafely() als "nicht sicher" markiert ist, werden Koroutinen abgebrochen, anstatt zu Zombies zu werden.
Rueckgabewert
Es wird kein Wert zurueckgegeben.
Beispiele
Beispiel #1 Grundlegende Verwendung
php
<?php
use Async\Scope;
$scope = new Scope();
$scope->spawn(function() {
\Async\delay(5000);
echo "Aufgabe als Zombie abgeschlossen\n";
});
// Scope ist geschlossen, aber die Koroutine laeuft weiter
$scope->disposeSafely();
var_dump($scope->isClosed()); // bool(true)
// Koroutine wird im Hintergrund weiter ausgefuehrtBeispiel #2 Geordnetes Herunterfahren mit Zombie-Warten
php
<?php
use Async\Scope;
$scope = new Scope();
$scope->spawn(function() {
\Async\delay(2000);
echo "Hintergrundaufgabe abgeschlossen\n";
});
$scope->disposeSafely();
// Auf Zombie-Koroutinen warten
$scope->awaitAfterCancellation(
errorHandler: function(\Throwable $e) {
error_log("Zombie-Fehler: " . $e->getMessage());
}
);Siehe auch
- Scope::dispose — Erzwungenes Schliessen des Scopes
- Scope::asNotSafely — Zombie-Verhalten deaktivieren
- Scope::awaitAfterCancellation — Auf Zombie-Koroutinen warten