Scope::disposeAfterTimeout
(PHP 8.6+, True Async 1.0)
public function disposeAfterTimeout(int $timeout): void
Planifie la fermeture du scope après un délai spécifié. Lorsque le délai expire, dispose() est appelé, annulant toutes les coroutines et fermant le scope. Cela est pratique pour définir une durée de vie maximale du scope.
Paramètres
timeout — temps en millisecondes avant la fermeture automatique du scope.
Valeur de retour
Aucune valeur n’est retournée.
Exemples
Exemple #1 Limitation du temps d’exécution
<?php
use Async\Scope;
$scope = new Scope();
// Le scope sera fermé après 10 secondes
$scope->disposeAfterTimeout(10_000);
$scope->spawn(function() {
try {
// Opération longue
\Async\delay(60_000);
} catch (\Async\CancelledException) {
echo "Task cancelled by scope timeout\n";
}
});
$scope->awaitCompletion();
Exemple #2 Scope avec une durée de vie limitée
<?php
use Async\Scope;
$scope = new Scope();
$scope->disposeAfterTimeout(5000); // 5 secondes pour tout le travail
$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); // Ne terminera pas à temps
echo "Task 3: OK\n"; // Ne sera pas affiché
});
$scope->awaitCompletion();
Voir aussi
- Scope::dispose — Fermeture immédiate du scope
- Scope::disposeSafely — Fermeture sécurisée du scope
- timeout() — Fonction globale de délai d’expiration