Scope::disposeAfterTimeout
(PHP 8.6+, True Async 1.0)
php
public function disposeAfterTimeout(int $timeout): voidPlant 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
- Scope::dispose — Sofortiges Schliessen des Scopes
- Scope::disposeSafely — Sicheres Schliessen des Scopes
- timeout() — Globale Timeout-Funktion