timeout
(PHP 8.6+, True Async 1.0)
timeout() — Crée un objet Async\Timeout qui se déclenche après le nombre de millisecondes spécifié.
Description
timeout(int $ms): Async\Awaitable
Crée un minuteur qui lève Async\TimeoutException après $ms millisecondes.
Utilisé comme limiteur de temps d’attente dans await() et d’autres fonctions.
Paramètres
ms
Temps en millisecondes. Doit être supérieur à 0.
Valeurs de retour
Retourne un objet Async\Timeout implémentant Async\Completable.
Erreurs/Exceptions
ValueError— si$ms<= 0.
Exemples
Exemple #1 Timeout sur await()
<?php
use function Async\spawn;
use function Async\await;
use function Async\timeout;
use Async\TimeoutException;
$coroutine = spawn(function() {
return file_get_contents('https://slow-api.example.com');
});
try {
$result = await($coroutine, timeout(3000));
} catch (TimeoutException $e) {
echo "Request did not complete within 3 seconds\n";
}
?>
Exemple #2 Timeout sur un groupe de tâches
<?php
use function Async\spawn;
use function Async\await_all_or_fail;
use function Async\timeout;
try {
$results = await_all_or_fail([
spawn(file_get_contents(...), 'https://api/a'),
spawn(file_get_contents(...), 'https://api/b'),
], timeout(5000));
} catch (Async\TimeoutException $e) {
echo "Not all requests completed within 5 seconds\n";
}
?>
Exemple #3 Annulation d’un timeout
<?php
use function Async\timeout;
$timer = timeout(5000);
// L'opération s'est terminée plus vite — annuler le minuteur
$timer->cancel();
?>