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实现七彩蟒蛇绘制实例代码
Jan 16 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
详解Python3 基本数据类型
Apr 19 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
pycharm快捷键汇总
Feb 14 Python
在pycharm中实现删除bookmark
Feb 14 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
python代码区分大小写吗
Jun 17 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
python中lower函数实现方法及用法讲解
Dec 23 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下正则来匹配dede模板标签的代码
2010/08/21 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
WIFI万能钥匙密码查询接口实例
2015/09/28 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
python继承和抽象类的实现方法
2015/01/14 Python
Python中__name__的使用实例
2015/04/14 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
在双python下设置python3为默认的方法
2018/10/31 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
Python unittest框架操作实例解析
2020/04/13 Python
简单的命令查看安装的python版本号
2020/08/28 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
HTML5中的新元素介绍
2008/10/17 HTML / CSS
美国Max仓库:Max Warehouse
2020/05/31 全球购物
办公室文书岗位职责
2013/12/16 职场文书
运动会开幕式邀请函
2014/01/22 职场文书
俄罗斯商务邀请函
2014/01/26 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
预备党员公开承诺书
2014/05/28 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
与美同行演讲稿
2014/09/13 职场文书
兴趣班停课通知
2015/04/24 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers