//创建子进程测试
public function process(){
$curr_pid = posix_getpid();//获取当前进程id
file_put_contents('1111.txt','创建子进程成功'.$curr_pid.PHP_EOL,FILE_APPEND);
echo $curr_pid;
$pid = pcntl_fork();
if($pid==-1){
//$this->response()->write('创建子进程失败');
file_put_contents('1111.txt','创建子进程失败'.$curr_pid.PHP_EOL,FILE_APPEND);
}elseif($pid>0){//父进程
cli_set_process_title('ceshi_process');
file_put_contents('1111.txt','创建 父 进程成功'.$curr_pid.PHP_EOL,FILE_APPEND);
}else{//创建子进程成功
$c_pid = posix_getpid();
cli_set_process_title('is process'.$curr_pid.' child process and id is'.$c_pid);
$this->parentP();//开始工作
}
// sleep(10);
posix_kill($curr_pid,SIGKILL);
}
//工作进程
public function work(){
$pid = pcntl_fork();//创建子进程
if($pid==-1){
file_put_contents('1111.txt','创建子进程的工作子进程失败'.PHP_EOL,FILE_APPEND);
echo PHP_EOL.'创建子进程的工作子进程失败';
}
if($pid == 0){
$curr_pid = posix_getpid();//获取当前进程id
for ($i=1;$i<=5;$i++){
file_put_contents('1111.txt','创建子进程的工作子进程成功,并开始工作'.$curr_pid.PHP_EOL,FILE_APPEND);
}
///sleep(10);
//posix_kill($curr_pid,SIGKILL);
}
}
//守护工作进程
public function parentP(){
$sit = posix_setsid();//设置为master进程
file_put_contents('1111.txt','设置子进程为主进程成功'.$sit.PHP_EOL,FILE_APPEND);
$this->work();
/*for($i=1;$i<=2;$i++){
$this->work();
}*/
// $curr_pid = posix_getpid();
// posix_kill($curr_pid,SIGKILL);
}
参考博主 枕边书相关博客