reactPHP进程启动阻塞计时器

时间:2017-01-05 19:43:44

标签: php asynchronous timer reactphp

我这里有一个带有两个计时器事件的reactPHP循环:

$loop = \React\EventLoop\Factory::create();

$process = new \React\ChildProcess\Process("php wait5seconds.php");

$process->on('exit', function($exitCode, $termSignal) {
    echo "Process Finished".PHP_EOL;
});

$loop->addTimer(2, function($timer) {
    echo "TWO".PHP_EOL;
});

$loop->addTimer(1, function($timer) use ($process) {
    echo "ONE".PHP_EOL;
    $process->start($timer->getLoop());
});

$loop->run();

如果没有子进程,计时器工作正常,我得到了输出:

ONE
TWO

但是当我在第一个计时器中启动一个进程时,第二个计时器被阻塞,直到进程结束。我得到了输出:

ONE
Process Finished
TWO

Isn应该是异步的吗?这个过程是睡眠(5)所以我期待:

ONE
TWO
Process Finished

我错过了什么?

1 个答案:

答案 0 :(得分:0)

适合我。

您的问题可能是php wait5seconds.php导致错误,因此不会运行5秒。如果用sleep 5替换它,一切都按预期工作。