【问题标题】:Symfony Tasks wait for multiple tasksSymfony 任务等待多个任务
【发布时间】:2016-06-04 23:42:20
【问题描述】:

我正在异步启动 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 ...
        });
    }
}

问题出在等待函数上。它等待任务完成,然后继续执行下一个任务。但我希望它异步运行。

我该怎么做?

谢谢!

【问题讨论】:

    标签: php symfony asynchronous


    【解决方案1】:

    根据 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;
    }   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多