KomponentenScope::dispose

Scope::dispose ​

(PHP 8.6+, True Async 1.0)

php
public function dispose(): void

Schliesst 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 ​