TaskGroup::spawn
(PHP 8.6+, True Async 1.0)
public TaskGroup::spawn(callable $task, mixed ...$args): void
Ajoute un callable au groupe avec une cle auto-incrementee (0, 1, 2, …).
Si aucune limite de concurrence n’est definie ou qu’un emplacement est disponible, la coroutine est creee immediatement. Sinon, le callable avec ses arguments est place dans une file d’attente et demarre lorsqu’un emplacement se libere.
Parametres
- task
- Le callable a executer. Accepte tout callable : Closure, fonction, methode.
- args
- Arguments passes au callable.
Erreurs
Lance Async\AsyncException si le groupe est scelle (seal()) ou annule (cancel()).
Exemples
Exemple #1 Utilisation de base
<?php
use Async\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->spawn(fn() => "first");
$group->spawn(fn() => "second");
$group->seal();
$results = $group->all();
var_dump($results[0]); // string(5) "first"
var_dump($results[1]); // string(6) "second"
});
Exemple #2 Avec des arguments
<?php
use Async\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->spawn(function(int $id) {
return "user:$id";
}, 42);
$group->seal();
$results = $group->all();
var_dump($results[0]); // string(7) "user:42"
});
Voir aussi
- TaskGroup::spawnWithKey — Ajouter une tache avec une cle explicite
- TaskGroup::all — Attendre toutes les taches