Scope::disposeAfterTimeout
(PHP 8.6+, True Async 1.0)
public function disposeAfterTimeout(int $timeout): void
Pianifica la chiusura dello scope dopo un timeout specificato. Quando il timeout scade, viene chiamato dispose(), cancellando tutte le coroutine e chiudendo lo scope. Questo e’ comodo per impostare una durata massima dello scope.
Parametri
timeout — tempo in millisecondi prima della chiusura automatica dello scope.
Valore di ritorno
Non viene restituito alcun valore.
Esempi
Esempio #1 Limitazione del tempo di esecuzione
<?php
use Async\Scope;
$scope = new Scope();
// Lo scope verra' chiuso dopo 10 secondi
$scope->disposeAfterTimeout(10_000);
$scope->spawn(function() {
try {
// Operazione lunga
\Async\delay(60_000);
} catch (\Async\CancelledException) {
echo "Task cancellato dal timeout dello scope\n";
}
});
$scope->awaitCompletion();
Esempio #2 Scope con durata limitata
<?php
use Async\Scope;
$scope = new Scope();
$scope->disposeAfterTimeout(5000); // 5 secondi per tutto il lavoro
$scope->spawn(function() {
\Async\delay(1000);
echo "Task 1: OK\n";
});
$scope->spawn(function() {
\Async\delay(2000);
echo "Task 2: OK\n";
});
$scope->spawn(function() {
\Async\delay(30_000); // Non terminera' in tempo
echo "Task 3: OK\n"; // Non verra' stampato
});
$scope->awaitCompletion();
Vedi anche
- Scope::dispose — Chiusura immediata dello scope
- Scope::disposeSafely — Chiusura sicura dello scope
- timeout() — Funzione globale di timeout