PHP多进程编程

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(子进程结束时会向父进程发送此信号)

原文地址:https://www.cnblogs.com/flytome/p/3953115.html