У меня есть цикл 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
Что мне не хватает?