1.概述
PCNTL函数和POSIX函数。
PCNTL函数需要在编译时加上--enable-pcntl;至于POSIX函数默认开启的,只要不再编译时disable就可以。
常用函数:pcntl_fork,pcntl_getmypid,pcntl_wait,pcntl_signal,pcntl_signal_dispatch,posix_kill,posix_getpid
2.创建子进程
<?php $pid = pcntl_fork();//程序从这一行开始分成两条执行线路,$pid的值对于父进程和子进程分别是子进程pid和0 //以下代码子进程和父进程都会执行,根据$pid的值来区分父子进程的代码逻辑 if($pid>0){ //to do 父进程代码 }elseif(!$pid){ //todo 子进程代码 }else{ //创建子进程失败 } while(pcntl_wait($status)!=0); //ps:如果pcntl_fork被放置在循环结构中,则子进程会在从自己诞生的那个循环开始继续向下执行,这个是容易错漏的地方
3.信号管理
函数:pcntl_signal,pcntl_signal_dispatch
信号:SIGINT(使用ctrl-c结束进程时),SIGTERM(使用kill pid时),SIGUSR1,SIGUSR2,SIGCHLD(子进程结束时会向父进程发送此信号)