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速度全攻略
Oct 09 PHP
php学习之数据类型之间的转换介绍
Jun 09 PHP
PHP笔记之:日期函数的使用介绍
Apr 24 PHP
php输入流php://input使用示例(php发送图片流到服务器)
Dec 25 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
Dec 28 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
php文件上传后端处理小技巧
May 22 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
Jul 16 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
PHP中字符安全过滤函数使用小结
2015/02/25 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
React 子组件向父组件传值的方法
2017/07/24 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
node实现简单的增删改查接口实例代码
2019/08/22 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Python中模块与包有相同名字的处理方法
2017/05/05 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
全球在线商店:BerryLook
2019/04/14 全球购物
商场中秋节活动方案
2014/02/07 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
黄石寨导游词
2015/02/05 职场文书
2015年母亲节寄语
2015/03/23 职场文书
大学生军训感言
2015/08/01 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js