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批量生成缩略图的代码
Jul 19 PHP
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
解析PHP中一些可能会被忽略的问题
Jun 21 PHP
PHP动态柱状图实现方法
Mar 30 PHP
php封装的连接Mysql类及用法分析
Dec 10 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
php从身份证获取性别和出生年月
Feb 09 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
php实现的数组转xml案例分析
Sep 28 PHP
PHP数组访问常用方法解析
Sep 05 PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 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
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
让PHP支持页面回退的两种方法
2008/01/10 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
destoon各类调用汇总
2014/06/20 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
快递业务员岗位职责
2014/01/06 职场文书
团员年度个人总结
2015/02/26 职场文书
自主招生自荐信范文
2015/03/04 职场文书
2015年导购员工作总结
2015/04/25 职场文书
升学宴家长答谢词
2015/09/29 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书