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 相关文章推荐
中国站长站 For Dede4.0 采集规则
May 27 PHP
php类中private属性继承问题分析
Nov 01 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
PHP如何将XML转成数组
Apr 04 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
php htmlentities()函数的定义和用法
May 13 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
php工具型代码之印章抠图
Jul 18 PHP
PHP常见的几种攻击方式实例小结
Apr 29 PHP
Yii框架的redis命令使用方法简单示例
Oct 15 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
PHP实现递归的三种方法
Jul 04 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的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
PHP 实现链式操作
2021/03/09 PHP
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
Python的函数的一些高阶特性
2015/04/27 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
Python matplotlib实时画图案例
2020/04/23 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
自荐信结尾
2013/10/27 职场文书
会计实习自我鉴定
2013/12/04 职场文书
先进党支部事迹材料
2014/01/13 职场文书
大二自我鉴定
2014/01/31 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
java如何实现socket连接方法封装
2021/09/25 Java/Android
Python采集股票数据并制作可视化柱状图
2022/04/04 Python