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