本文将讲解以下内容:1.PHP原生进程函数介绍2.PHP实现多进程代码1.PHP原生进程函数虽然PHP是世界上最好的语言,但是对于PHPer来说,多进程,进程管理还是比较陌生。本文将介绍如何使用PHP原生代码实现多处理。首先我们要了解PHP实现多进程的函数,如pcntl_fork、pcntl_wait、pcntl_waitpid等。pcntl_fork(void):int的作用是创建一个子进程,返回类型为诠释。父进程和子进程都从fork位置继续往下执行。当子进程创建成功后,在父进程的执行线程中返回生成的子进程的PID,在子进程的执行线程中返回0。失败时,在父进程上下文中返回-1,不创建子进程,并引发PHP错误。pcntl_wait(int&$status[,int$options=0]):int的作用是等待或者返回fork子进程的状态。此函数暂停当前进程的执行,直到子进程退出或接收到中断当前进程的信号或调用信号处理程序。如果调用此函数时子进程已经退出,则此函数立即返回。此函数返回退出的子进程的编号,出错时返回-1,如果WNOHANG作为选项提供并且没有可用的子进程,则返回0。pcntl_waitpid(int$pid,int&$status[,int$options=0]):这个int函数的作用是等待或者返回fork子进程的状态。调用该函数会暂停当前进程的执行,直到参数pid指定的进程号的进程退出,或者接收到要求中断当前进程的信号,或者调用信号处理程序。pcntl_waitpid()返回退出的子进程的进程ID,如果发生错误则返回-1,如果提供WNOHANG作为选项且没有子进程可用则返回0。pcntl_signal(int$signo,callback$handler[,bool$restart_syscalls=true]):bool该函数用于安装一个信号处理器,为signo指定的信号安装一个新的信号处理器。signo是信号编号。handler是信号处理程序,可以是用户创建的函数或方法,也可以是系统一直在SIG_IGN(忽略信号处理程序)或SIG_DFL(默认信号处理程序)。restart_syscalls指定在信号到达时是否启用系统调用重启。函数的返回值为bool类型,成功返回true,失败返回false。2.PHP实现多进程代码
