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 相关文章推荐
用缓存实现静态页面的测试
Dec 06 PHP
PHP 危险函数解释 分析
Apr 22 PHP
php适配器模式介绍
Aug 14 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
PHP中的闭包(匿名函数)浅析
Feb 07 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
php中strtotime函数性能分析
Nov 20 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
PHP实现将base64编码字符串转换成图片示例
Jun 22 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
php实现对文件压缩简单的方法
Sep 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
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
python中实现栈的三种方法
2020/12/19 Python
安全协议书
2014/04/23 职场文书
小学清明节活动总结
2014/07/04 职场文书
学校与家长安全责任书
2014/07/23 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
介绍长城的导游词
2015/01/30 职场文书
java项目构建Gradle的使用教程
2022/03/24 Java/Android