await_first_success

(PHP 8.6+, True Async 1.0)

await_first_success() — Attend la première tâche terminée avec succès. Les erreurs des autres tâches sont collectées séparément et n’interrompent pas l’attente.

Description

await_first_success(
    iterable $triggers,
    ?Async\Awaitable $cancellation = null
): array

Paramètres

triggers Une collection itérable d’objets Async\Completable.

cancellation Un Awaitable optionnel pour annuler l’attente.

Valeurs de retour

Un tableau de deux éléments : [$result, $errors]

Exemples

Exemple #1 Requête tolérante aux pannes

<?php
use function Async\spawn;
use function Async\await_first_success;

// Essayer plusieurs serveurs ; prendre la première réponse réussie
[$result, $errors] = await_first_success([
    spawn(file_get_contents(...), 'https://primary.example.com/api'),
    spawn(file_get_contents(...), 'https://secondary.example.com/api'),
    spawn(file_get_contents(...), 'https://fallback.example.com/api'),
]);

if ($result !== null) {
    echo "Data received\n";
} else {
    echo "All servers unavailable\n";
    foreach ($errors as $error) {
        echo "  - " . $error->getMessage() . "\n";
    }
}
?>

Notes

Note : Le paramètre triggers accepte tout iterable, y compris les implémentations d’Iterator. Voir l’exemple avec Iterator.

Voir aussi