php进程pcntl_fork详解
发表于:2023-09-09 10:21:41浏览:69次
pcntl_fork()函数是php-pcntl模块中用于创建进程的函数。(不支持windows)
至于php_pcntl扩展如何安装开启这里就不介绍了,只分析pcntl_fork()这个函数本身。
$one = 123 ;
$one++ ;
$two = time();
$pid = [];
$pid = pcntl_fork();
$three = time();
当pcntl_fork()函数执行的时候,会创建一个子进程。子进程会复制当前进程,也就是父进程的所有:数据,代码,还有状态
① 当pcntl_fork()创建子进程成功后,在父进程内,返回子进程号,在子进程内返回0,失败则返回-1
② 子进程会复制父进程的代码,数据。那么就说明:子,父进程拥有的代码和数据会一摸一样
③ 重点:子进程会复制父进程的状态,那么就有上面的示例代码:在第五行执行了pcntl_fork,那么创建出的子进程,代码也是从第五行开始执行的。又子进程复制了,数据,代码。所以,在子进程内同理存在:$one , $two等变量。
例:
for($i=0;$i<3;i++){
$pid = pcntl_fork() ;
}
那么:上面的for循环,实际会产生多少个子进程?答案是7个,在linux下,用ps命令将可以看到8个进程(1个父进程,7个子进程)
原因:父进程在i=0时,会创建出一个子进程0,此时的子进程,还会继续执行循环。创建出属于自己的子进程。同理:$i = 1 时也会这样……
栏目分类全部>