php中shell_exec实现多进程

php中shell_exec实现多进程

中文

使用说明

&符号是必不可少的,缺少了,则不能实现多进程。以下代码仅在linux环境支持。nohup php process.php >/dev/null 2>&1 &

test.php如下,

<?php
/**
 * 2019-12-13 16:46:29
 */
foreach(range(1,10) as $v ){
	echo $v .'>----'.PHP_EOL;
	//下面的方式会阻塞
	//shell_exec('php process.php');
	//下面的方式不会被阻塞,瞬间执行完。
	exec('nohup php process.php >/dev/null 2>&1 &');
}

process.php内容

<?php
/**
 * 2019-12-13 16:46:29
 */
echo 'start' . PHP_EOL;
sleep(3);
echo 'end'. PHP_EOL

问题

使用了 &后缀符号,但是进程依然卡在exec无法执行后续代码?注意,执行的程序有输出,没有丢弃,没有使用nohup。个人感觉,应该是卡在有输出,没有丢弃方面。