Scope::disposeAfterTimeout

(PHP 8.6+, True Async 1.0)

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

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\CancelledException) {
        echo "Aufgabe durch Scope-Timeout abgebrochen\n";
    }
});

$scope->awaitCompletion();

Beispiel #2 Scope mit begrenzter Lebensdauer

<?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();

Siehe auch