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+Html+缓存
Nov 25 PHP
mysql 全文搜索 技巧
Apr 27 PHP
PHP中文件上传的一个问题
Sep 04 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 PHP
PHP实现对站点内容外部链接的过滤方法
Sep 10 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
yii2实现根据时间搜索的方法
May 25 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
PHP实现查询手机归属地的方法详解
Apr 28 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循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
js命名空间写法示例
2015/12/18 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
浅谈JavaScript的闭包函数
2016/12/08 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
初步讲解Python中的元组概念
2015/05/21 Python
python difflib模块示例讲解
2017/09/13 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
python和shell获取文本内容的方法
2018/06/05 Python
python实现ip代理池功能示例
2019/07/05 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
python音频处理的示例详解
2020/12/23 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
升职自荐信范文
2013/10/05 职场文书
应届毕业生求职信范文
2013/12/18 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
学校捐款活动总结
2015/05/09 职场文书
z-index不起作用
2021/03/31 HTML / CSS
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server