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。个人感觉,应该是卡在有输出,没有丢弃方面。