Scope::dispose
(PHP 8.6+, True Async 1.0)
public function dispose(): void
Bricht erzwungen alle Koroutinen im Scope ab und schliesst ihn. Nach dem Aufruf von dispose() wird der Scope als geschlossen und abgebrochen markiert. Einem geschlossenen Scope koennen keine neuen Koroutinen hinzugefuegt werden.
Dies entspricht dem Aufruf von cancel() gefolgt vom Schliessen des Scopes.
Rueckgabewert
Es wird kein Wert zurueckgegeben.
Beispiele
Beispiel #1 Erzwungenes Schliessen eines Scopes
<?php
use Async\Scope;
$scope = new Scope();
$scope->spawn(function() {
try {
\Async\delay(60_000);
} catch (\Async\CancelledException) {
echo "Koroutine beim Dispose abgebrochen\n";
}
});
// Alle Koroutinen werden abgebrochen, Scope geschlossen
$scope->dispose();
var_dump($scope->isClosed()); // bool(true)
var_dump($scope->isCancelled()); // bool(true)
Beispiel #2 Bereinigung in einem try/finally-Block
<?php
use Async\Scope;
$scope = new Scope();
try {
$scope->spawn(function() {
// Geschaeftslogik
\Async\delay(5000);
});
$scope->awaitCompletion();
} finally {
$scope->dispose();
}
Siehe auch
- Scope::disposeSafely — Sicheres Schliessen (mit Zombies)
- Scope::disposeAfterTimeout — Schliessen nach einem Timeout
- Scope::cancel — Abbrechen ohne den Scope zu schliessen