Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反应PHP进程启动阻塞计时器_Php_Asynchronous_Timer_Reactphp - Fatal编程技术网

反应PHP进程启动阻塞计时器

反应PHP进程启动阻塞计时器,php,asynchronous,timer,reactphp,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-&g

这里有一个带有两个计时器事件的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
我错过了什么

对我有用


您的问题可能是
php wait5seconds.php
导致错误,因此在5秒钟内不会运行。如果您将其替换为
sleep 5
,则一切正常。

您在linux上吗?我在Windows上是的,您可以在Windows上尝试超时5。