php中pcntl_fork创建子进程的方法实例


Posted in PHP onMarch 14, 2019

一、php中pcntl_fork函数概述

pcntl_fork()函数是php中用于创建子进程的一个函数,返回创建的子进程的pid。

该函数创建子进程具体fork的过程:

(1)调用该函数即创建一个子进程,创建成功父进程返回子进程的pid,子进程返回0;
(2)创建子进程实际上对父进程的一个拷贝,共享代码空间,拷贝父进程的数据,也就是说父进程改变父进程的数据,子进程改变子进程的数据变量等;

二、示例代码分析

代码示例:

<?php
  $curr_pid = posix_getpid();//获取当前的进程id
  
  //将当前进程的id写入文件中
  echo '当前进程:'.$curr_pid.PHP_EOL;
  
  //开始创建子进程
  $son_pid = pcntl_fork();//返回子进程的id
 
  //查看当前进程
  echo '创建子进程之后当前的进程为:'.posix_getpid().PHP_EOL;
  
  //创建了子进程之后
  if($son_pid > 0){
    echo '子进程id:'.$son_pid.PHP_EOL;
  }

以上代码执行后结果为:

php中pcntl_fork创建子进程的方法实例

示例代码分析:

(1)发现创建了子进程之后,系统会切换到子进程中,而子进程中的代码是从含有pcntl_fork函数的那行执行的
(2)创建子进程之后,子进程的代码段是拷贝pcntl_fork函数及之后的代码段,之前的代码段并不拷贝,但是具体的数据变量子进程仍然会拷贝
(3)可见,fork之后程序会分叉执行,即子进程执行

三、pcntl_fork的业务场景举例

  1. php的多进程中,常用pcntl_fork来实现并发,多用于一些简单工具的实现。
  2. 例如监控工具,想要监控几个不同指标的情形,可以使用主进程监控各指标的配置变化,然后对每个指标分别fork一个子进程来监控其具体的情形,当主进程发现指标的配置改变则kill掉之前的子进程重新创建子进程进行监控。
  3. 主进程进行业务分发操作,子进程进行具体的业务逻辑执行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php include的妙用,实现路径加密
Jul 29 PHP
php异常处理使用示例
Feb 25 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
微信API接口大全
Apr 15 PHP
php投票系统之增加与删除投票(管理员篇)
Jul 01 PHP
Yii2实现log输出到file及database的方法
Nov 12 PHP
yii2中dropDownList实现二级和三级联动写法
Apr 26 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
php对微信支付回调处理的方法
Aug 23 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 PHP
PHP7内核之Reference详解
Mar 14 #PHP
掌握PHP垃圾回收机制详解
Mar 13 #PHP
浅谈php的TS和NTS的区别
Mar 13 #PHP
浅谈PHP各环境下的伪静态配置
Mar 13 #PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 #PHP
Laravel事件监听器用法实例分析
Mar 12 #PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 #PHP
You might like
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
img的onload的另类用法
2008/01/10 Javascript
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
2014年实验室工作总结
2014/12/03 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
JS实现数组去重的11种方法总结
2022/04/04 Javascript
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技