2017-01-05 25 views
0

我這裏有一個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 

不應該是異步?過程是睡眠(5)所以我期望:

ONE 
TWO 
Process Finished 

我錯過了什麼?

回答

0

適合我。

您的問題可能是php wait5seconds.php導致錯誤,因此不會運行5秒。如果你用sleep 5替換它,一切都按預期工作。

+0

你在linux上嗎?我在windows –

+0

是的,你可以在Windows上嘗試'timeout 5'。 – kelunik