Php多进程实现代码


Posted in Python onMay 07, 2018

php多进程实现

PHP有一组进程控制函数(编译时需要?enable-pcntl与posix扩展),使得php能在nginx系统中实现跟c一样的创建子进程、使用exec函数执行程序、处理信号等功能。

CentOS 6 下yum安装php的,默认是不安装pcntl的,因此需要单独编译安装,首先下载对应版本的php,解压后

cd php-version/ext/pcntl 
phpize 
./configure && make && make install 
cp /usr/lib/php/modules/pcntl.so /usr/lib64/php/modules/pcntl.so 
echo "extension=pcntl.so" >> /etc/php.ini 
/etc/init.d/httpd restart

方便极了。

下面是示例代码:

<?php 
header('content-type:text/html;charset=utf-8' ); 
 
// 必须加载扩展 
if (!function_exists("pcntl_fork")) { 
 die("pcntl extention is must !"); 
} 
//总进程的数量 
$totals = 3; 
// 执行的脚本数量 
$cmdArr = array(); 
// 执行的脚本数量的数组 
for ($i = 0; $i < $totals; $i++) { 
 $cmdArr[] = array("path" => __DIR__ . "/run.php", 'pid' =>$i ,'total' =>$totals); 
} 
 /* 
展开:$cmdArr 
Array 
( 
 [0] => Array 
 ( 
  [path] => /var/www/html/company/pcntl/run.php 
  [pid] => 0 
  [total] => 3 
 ) 
 [1] => Array 
 ( 
  [path] => /var/www/html/company/pcntl/run.php 
  [pid] => 1 
  [total] => 3 
 ) 
 [2] => Array 
 ( 
  [path] => /var/www/html/company/pcntl/run.php 
  [pid] => 2 
  [total] => 3 
 ) 
) 
*/ 
 
pcntl_signal(SIGCHLD, SIG_IGN); //如果父进程不关心子进程什么时候结束,子进程结束后,内核会回收。 
foreach ($cmdArr as $cmd) { 
 $pid = pcntl_fork(); //创建子进程 
 //父进程和子进程都会执行下面代码 
 if ($pid == -1) { 
 //错误处理:创建子进程失败时返回-1. 
 die('could not fork'); 
 } else if ($pid) { 
 //父进程会得到子进程号,所以这里是父进程执行的逻辑 
 //如果不需要阻塞进程,而又想得到子进程的退出状态,则可以注释掉pcntl_wait($status)语句,或写成: 
 pcntl_wait($status,WNOHANG); //等待子进程中断,防止子进程成为僵尸进程。 
 } else { 
 //子进程得到的$pid为0, 所以这里是子进程执行的逻辑。 
 $path = $cmd["path"]; 
 $pid = $cmd['pid'] ; 
 $total = $cmd['total'] ; 
 echo exec("/usr/bin/php {$path} {$pid} {$total}")."\n"; 
 exit(0) ; 
 } 
} 
?>

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python使用Flask框架同时上传多个文件的方法
Mar 21 Python
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
SQLite3中文编码 Python的实现
Jan 11 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
Python WEB应用部署的实现方法
Jan 02 Python
python感知机实现代码
Jan 18 Python
通过cmd进入python的实例操作
Jun 26 Python
python3 字符串知识点学习笔记
Feb 08 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
pytorch fine-tune 预训练的模型操作
Jun 03 Python
OpenCV-Python实现图像平滑处理操作
Jun 08 Python
Python格式化输出%s和%d
May 07 #Python
python获取代理IP的实例分享
May 07 #Python
对python使用http、https代理的实例讲解
May 07 #Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 #Python
python使用代理ip访问网站的实例
May 07 #Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 #Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 #Python
You might like
一个php作的文本留言本的例子(三)
2006/10/09 PHP
php 时间计算问题小结
2009/01/04 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Eclipse + Python 的安装与配置流程
2013/03/05 Python
Python读写Excel文件方法介绍
2014/11/22 Python
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
Unicode和Python的中文处理
2017/03/19 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
python实现dijkstra最短路由算法
2019/01/17 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
创业计划书中包含的9个方面
2013/12/26 职场文书
茶叶生产计划书
2014/01/10 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
给医院的感谢信
2015/01/21 职场文书
继承权公证书范本
2015/01/23 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python