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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
php扩展ZF――Validate扩展
Jan 10 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 PHP
PHP 导出Excel示例分享
Aug 18 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
PHP中串行化用法示例
Nov 16 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 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
PHP自动更新新闻DIY
2006/10/09 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
2013/12/10 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
vue项目实战总结篇
2018/02/11 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
Python运用于数据分析的简单教程
2015/03/27 Python
Python合并字符串的3种方法
2015/05/21 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
难忘的一课教学反思
2014/04/30 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
Python快速优雅的批量修改Word文档样式
2021/05/20 Python