KomponentenScope::disposeAfterTimeout

Scope::disposeAfterTimeout

(PHP 8.6+, True Async 1.0)

php
public function disposeAfterTimeout(int $timeout): void

Plant das Schliessen des Scopes nach einem angegebenen Timeout. Wenn das Timeout ablaeuft, wird dispose() aufgerufen, wodurch alle Koroutinen abgebrochen und der Scope geschlossen wird. Dies ist praktisch, um eine maximale Scope-Lebensdauer festzulegen.

Parameter

timeout — Zeit in Millisekunden, bevor der Scope automatisch geschlossen wird.

Rueckgabewert

Es wird kein Wert zurueckgegeben.

Beispiele

Beispiel #1 Ausfuehrungszeit begrenzen

php
<?php

use Async\Scope;

$scope = new Scope();

// Scope wird nach 10 Sekunden geschlossen
$scope->disposeAfterTimeout(10_000);

$scope->spawn(function() {
    try {
        // Lange Operation
        \Async\delay(60_000);
    } catch (\Async\AsyncCancellation) {
        echo "Aufgabe durch Scope-Timeout abgebrochen\n";
    }
});

$scope->awaitCompletion(Async\timeout(5000));

Beispiel #2 Scope mit begrenzter Lebensdauer

php
<?php

use Async\Scope;

$scope = new Scope();
$scope->disposeAfterTimeout(5000); // 5 Sekunden fuer alle Arbeiten

$scope->spawn(function() {
    \Async\delay(1000);
    echo "Aufgabe 1: OK\n";
});

$scope->spawn(function() {
    \Async\delay(2000);
    echo "Aufgabe 2: OK\n";
});

$scope->spawn(function() {
    \Async\delay(30_000); // Wird nicht rechtzeitig fertig
    echo "Aufgabe 3: OK\n"; // Wird nicht ausgegeben
});

$scope->awaitCompletion(Async\timeout(5000));

Siehe auch