Scope::dispose
(PHP 8.6+, True Async 1.0)
php
public function dispose(): voidSchliesst den Scope und bricht alle Koroutinen darin ab. Nach dem Aufruf von dispose() wird der Scope als geschlossen und abgebrochen markiert. Einem geschlossenen Scope koennen keine neuen Koroutinen hinzugefuegt werden.
Fuer einen Scope ohne das dispose-safely-Flag (new Scope() standardmaessig) entspricht dies dem Aufruf von cancel() gefolgt vom Schliessen des Scopes. Ein Scope, der das Flag traegt -- gesetzt durch allowZombies() oder von einem Elternteil geerbt, der es hat, etwa dem main scope -- laesst seine Koroutinen stattdessen als Zombies weiterlaufen, genau wie disposeSafely().
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