Scope::dispose
(PHP 8.6+, True Async 1.0)
php
public function dispose(): voidBricht 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
<?php
use Async\Scope;
$scope = new Scope();
$scope->spawn(function() {
try {
\Async\delay(60_000);
} catch (\Async\AsyncCancellation) {
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
<?php
use Async\Scope;
$scope = new Scope();
try {
$scope->spawn(function() {
// Geschaeftslogik
\Async\delay(5000);
});
$scope->awaitCompletion(Async\timeout(5000));
} 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