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扩展ZF――Validate扩展
Jan 10 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
PHP模块memcached使用指南
Dec 08 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
PHP实现上传图片到 zimg 服务器
Oct 19 PHP
PHP实现一个简单url路由功能实例
Nov 05 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
模仿OSO的论坛(四)
2006/10/09 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
2012/09/23 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
js获取单选按钮的数据
2006/11/27 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
JavaScript实用代码小技巧
2018/08/23 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
微信跳一跳游戏python脚本
2020/04/01 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
python 实现按对象传值
2019/12/26 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
Python 创建TCP服务器的方法
2020/07/28 Python
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
电厂厂长岗位职责
2014/01/02 职场文书
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
2014国培学习感言
2014/03/05 职场文书
需求分析说明书
2014/05/09 职场文书
美国留学经济担保书
2014/05/20 职场文书
同志主要表现材料
2014/08/21 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
技术入股合作协议书
2014/10/07 职场文书
2014年审计工作总结
2014/11/17 职场文书
应聘教师自荐信
2015/03/26 职场文书
使用Redis实现实时排行榜功能
2021/07/02 Redis
SQLServer之常用函数总结详解
2021/08/30 SQL Server
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏