父进程使用while(1) 挂起进程,子进程中用到了exit(1) 但是最终ps -ef |grep php 发现子进程并没有退出,是什么原因造成这个问题的,正常来说子进程不是应该会退出吗?
<?php
for($i=0;$i<10;$i++){
fork_worker();
}
function fork_worker(){
$pid = pcntl_fork();
if($pid == 0){ //child processes
echo "子进程\r\n";
$this_id = getmypid();
echo $this_id."\r\n";
exit(1);
}elseif($pid > 0){ //master processes
echo "父进程\r\n";
}
}
while(1);
?>
忘答疑解惑
PHP在主进程fork出来的子进程,需要通过
pcntl_wait
方法来等待子进程退出。PHP提供的exit
方法是退出脚本的执行,不是退出进程。PHP进程讲解可以参考: https://www.iminho.me/wiki/bl... PHP进程相关方法参考手册:http://php.net/manual/zh/ref....