php中pcntl_fork详解


Posted in PHP onApril 01, 2021

pcntl_fork()函数是php-pcntl模块中用于创建进程的函数。(不支持windows)

至于php_pcntl扩展如何安装开启这里就不介绍了,只分析pcntl_fork()这个函数本身。

$one = 123;
$one++;
$two = time();
$pid = [];
$pid = pcntl_fork();
$three = time();

当:pcntl_fork()函数执行的时候,会创建一个子进程。子进程会复制当前进程,也就是父进程的所有:数据,代码,还有状态。

1.当pcntl_fork()创建子进程成功后,在父进程内,返回子进程号,在子进程内返回0,失败则返回-1

2.子进程会复制父进程的代码,数据。那么就说明:子,父进程拥有的代码和数据会一模一样。

3.重点:子进程会复制父进程的状态,那么就有上面的示例代码:在第五行执行了pcntl_fork,那么创建出的子进程,代码也是从第五行开始执行的。又子进程复制了数据,代码。所以,在子进程内同理存在:$one,$two等变量

for ($i = 0; $i < 3; $i++) {
    $pid = pcntl_fork();
}
sleep(30);

那么:上面的for循环,实际会产生多少个子进程?答案是7个,在linux下,用ps命令将可以看到8个进程(1个父进程,7个子进程)
原因:父进程在 i = 0 时 , 创 建 出 一 个 子 进 程 0 , 此 时 的 子 进 程 , 还 会 继 续 执 行 循 环 。 创 建 出 属 于 自 己 的 子 进 程 。 同 理 : i=0时,创建出一个子进程0,此时的子进程,还会继续执行循环。创建出属于自己的子进程。同理: i=0时,创建出一个子进程0,此时的子进程,还会继续执行循环。创建出属于自己的子进程。同理:i=1时也会这样……

PHP 相关文章推荐
PHP小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 PHP
PHP 字符串 小常识
Jun 05 PHP
php实现用户在线时间统计详解
Oct 08 PHP
非常精妙的PHP递归调用与静态变量使用
Dec 16 PHP
php解析url的三个示例
Jan 20 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
基于php判断客户端类型
Oct 14 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
Mar 13 PHP
使用Zttp简化Guzzle 调用
Jul 02 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 PHP
php 解析非标准json、非规范json
Apr 01 #PHP
php 原生分页
Apr 01 #PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 #PHP
php 防护xss,PHP的防御XSS注入的终极解决方案
Apr 01 #PHP
WordPress多语言翻译插件 - WPML使用教程
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
微信小程序和php的登录实现
Apr 01 #PHP
You might like
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
js控制frameSet示例
2013/09/10 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python ansible服务及剧本编写
2017/12/29 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
浅析Python __name__ 是什么
2020/07/07 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
一些.net面试题
2014/10/06 面试题
.net工程师笔试题
2012/06/09 面试题
自我鉴定怎么写
2013/12/05 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
旅游活动总结
2014/08/27 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
银行奉献演讲稿
2014/09/16 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
Python中的变量与常量
2021/11/11 Python
关于Python使用turtle库画任意图的问题
2022/04/01 Python