PHP多进程简单实例小结


Posted in PHP onNovember 09, 2019

本文实例讲述了PHP多进程。分享给大家供大家参考,具体如下:

PHP创建多进程需要使用到pcntl模块 在编译时加上--enable-pcntl打开进程控制支持,不是Unix类系统不支持此模块

php官网介绍http://php.net/manual/zh/book.pcntl.php,创建子进程需要使用到pcntl_fork(),文档上介绍该函数说 ,pcntl_fork — 在当前进程当前位置产生分支(子进程)。

译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程号,而子进程得到的是0。失败时,在 父进程上下文返回-1,不会创建子进程,并且会引发一个PHP错误。

<?php
  $pid = pcntl_fork();
  var_dumP($pid);
?>

运行上面面代码,会返回两个值,一个是0和子进程的PID;

<?php
  $i=0;
  while($i!=5){
     $pid = pcntl_fork();
     echo "进程ID:".$pid."==".$i++.PHP_EOL;
  }   
?>

运行上面程序发现进程数指数增长 刚好是2^5=32个;原因是每一条都执行了while循环,到最后成了进程的指数增长——也就是说fork的时候把while循环也带了进去,父进程在执行fork的过程中;会得到子进程的进程号

而子进程会的得到是0;意味着0就是子进程标志;改正后代码是这样的

<?php
  $i=0;
  while($i!=5){
  $pid = pcntl_fork();
  echo "进程ID:".$pid."==".$i++.PHP_EOL;
  if ($pid == 0) {
  //code
  exit(0);
  }
  }
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP生成自己的LOG文件
Oct 09 PHP
php.ini中的php-5.2.0配置指令详解
Mar 27 PHP
php中检查文件或目录是否存在的代码小结
Oct 22 PHP
PHP连接access数据库
Mar 27 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
PHP微商城开源代码实例
Mar 27 PHP
详解提高使用Java反射的效率方法
Apr 29 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 #PHP
PHP用swoole+websocket和redis实现web一对一聊天
Nov 05 #PHP
基于thinkphp6.0的success、error实现方法
Nov 05 #PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 #PHP
详解Laravel服务容器的绑定与解析
Nov 05 #PHP
php+laravel依赖注入知识点总结
Nov 04 #PHP
PHP保存Base64图片base64_decode的问题整理
Nov 04 #PHP
You might like
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
Javascript &amp; DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
纯JS实现轮播图
2017/02/22 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
python collections模块的使用
2020/10/16 Python
python爬取代理ip的示例
2020/12/18 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
文史专业毕业生自荐信
2013/11/17 职场文书
二年级体育教学反思
2014/01/15 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
租车协议书
2015/01/27 职场文书
博士生专家推荐信
2015/03/25 职场文书
法制教育讲座心得体会
2016/01/14 职场文书