Symfony Tasks等待多个任务

时间:2016-02-23 08:30:15

标签: php symfony asynchronous

我正在异步启动10个进程:

$procs = [];

for($i = 0; $i < 10; $i++) {
    $proc = new Process('ls -lsa');

    $proc->start();

    $procs[$i] = $proc;
}

现在我想等待异步,让每个进程在等待时完成并打印出状态信息:

foreach($procs as $proc) {
    $proc->wait(function ($type, $buffer) {
        if (Process::ERR === $type) {
            // Print out error ...
        } else {
            // Print out state informations ...
        });
    }
}

问题在于等待功能。它等待任务完成,然后继续执行下一个任务。但我想让它以异步方式运行。

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据Symfony文档,wait方法是阻塞的,因此将等到该过程完成后再继续。

如果您不想等待,可以重构代码以使用run方法:

for($i = 0; $i < 10; $i++) {
    $process = new Process('ls -lsa');
    $process->run(function ($type, $buffer) {
        if (Process::ERR === $type) {
            echo 'ERR > '.$buffer;
        } else {
            echo 'OUT > '.$buffer;
        }
    });
    $procs[$i] = $proc;
}