TaskGroup::getIterator

(PHP 8.6+, True Async 1.0)

public TaskGroup::getIterator(): Iterator

Retourne un iterateur qui produit les resultats au fur et a mesure que les taches se terminent. TaskGroup implemente IteratorAggregate, vous pouvez donc utiliser foreach directement.

Comportement de l’iterateur

Important : Sans appeler seal(), l’iteration attendra indefiniment.

Exemples

Exemple #1 Traitement des resultats des qu’ils sont prets

<?php

use Async\TaskGroup;

spawn(function() {
    $group = new TaskGroup(concurrency: 3);

    for ($i = 0; $i < 10; $i++) {
        $group->spawn(fn() => fetchUrl($urls[$i]));
    }
    $group->seal();

    foreach ($group as $key => [$result, $error]) {
        if ($error !== null) {
            echo "Tache $key echouee : {$error->getMessage()}\n";
            continue;
        }
        echo "Tache $key terminee\n";
    }
});

Exemple #2 Iteration avec cles nommees

<?php

use Async\TaskGroup;

spawn(function() {
    $group = new TaskGroup();

    $group->spawnWithKey('users', fn() => fetchUsers());
    $group->spawnWithKey('orders', fn() => fetchOrders());
    $group->seal();

    foreach ($group as $key => [$result, $error]) {
        if ($error === null) {
            echo "$key : " . count($result) . " enregistrements recus\n";
        }
    }
});

Voir aussi