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快速url重写更新版[需php 5.30以上]
Apr 25 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
header跳转和include包含问题详解
Sep 08 PHP
php加密解密函数authcode的用法详细解析
Oct 28 PHP
php判断电脑访问、手机访问的例子
May 10 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
php把时间戳转换成多少时间之前函数的实例
Nov 16 PHP
laravel配置Redis多个库的实现方法
Apr 10 PHP
php进行md5加密简单实例方法
Sep 19 PHP
用php如何解决大文件分片上传问题
Jul 07 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数据缓存技术
2007/02/14 PHP
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
PHP Stream_*系列函数
2010/08/01 PHP
PHP APC的安装与使用详解
2013/06/13 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
document.all与WEB标准
2020/05/13 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
微信小程序 JS动态修改样式的实现方法
2018/12/16 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
办理护照工作证明
2014/10/10 职场文书
学校社团活动总结
2015/05/07 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js