php 自带多进程,php多进程实现

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方便极了。

下面是示例代码:

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) ;

}

}

?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Quick BI V4.0功能“炸弹”来袭,重磅推出即席分析、模板市场、企业微信免密登录等强势功能

简介&#xff1a; 2021年7月&#xff0c;Quick BI公共云版本迭代新功能&#xff1a;重磅推出即席分析、模板市场&#xff0c;分析门槛再降低&#xff1b;推出企业微信无缝对接&#xff0c;移动端类目个性配置及管理提升多端能力&#xff1b;数据建模配置交互升级至拖拽模式提升…

打印速度快点的打印机_瞒着领导偷偷给你们发两台打印机

前几次小粉笔组织的活动都被“投诉”&#xff01;说我们打印机太少~小粉笔心领神会&#xff0c;在这个月的活动预算费用上悄咪咪加了【两台打印机】~(看小粉笔多疼你们&#xff01;)希望知道的笔芯不要把这条推文转发给我领导(要不然你们以后就没有打印机了~哼&#xff01;)现在…

数据库误操作后悔药来了:AnalyticDB PostgreSQL教你实现分布式一致性备份恢复

简介&#xff1a; 本文将介绍AnalyticDB PostgreSQL版备份恢复的原理与使用方法。 一、背景 AnalyticDB PostgreSQL版&#xff08;简称ADB PG&#xff09;是阿里云数据库团队基于PostgreSQL内核&#xff08;简称PG&#xff09;打造的一款云原生数据仓库产品。在数据实时交互式…

与变异风险词赛跑 阿里探索AI治理网络风险

最近&#xff0c;阿里安全一线风控小二可粒发现&#xff0c;在禁售的风险防控库里&#xff0c;有人试图“上新”新品种&#xff0c;不法份子借助在社交媒体上走红的“魔法改运”等说辞&#xff0c;引人入玄学骗局。 尽量提前发现风险问题&#xff0c;提早布防是阿里安全风控部…

手机网页播放器php,html5手机移动端视频播放代码插件

js代码//document.documentElement.style.overflowhidden;document.body.style.overflowhidden;zymedia(video,{autoplay: true});var screenheight window.screen.height/2;$("#modelView").width(window.screen.width);$("#modelView").height(window.s…

高效研发运维体系构建的流程和方法论

简介&#xff1a; 云计算产品大多都会与云原生发生关联&#xff0c;云原生正在重塑整个软件的生命周期。但到底什么是云原生&#xff1f;云原生带来的最大技术创新和未来机会是什么&#xff1f;围绕云原生&#xff0c;是否可以构建出一套云上的开发&运维体系&#xff0c;打…

Colima:MacOS 上的极简容器运行时和 Kubernetes

作者 | Addo Zhang来源 | 云原生指北Colima 是一个以最小化设置来在MacOS上运行容器运行时和 Kubernetes 的工具。支持 m1&#xff0c;同样也支持 Linux。Colima 的名字取自 Container on Lima。Lima 是一个虚拟机工具&#xff0c;可以实现自动的文件共享、端口转发以及 contai…

当容器应用越发广泛,我们又该如何监测容器?

简介&#xff1a; 随着容器技术蓬勃发展与落地推行&#xff0c;越来越多企业的业务运行于容器中。作为主流部署方式之一&#xff0c;容器将团队的任务和关注点分割开&#xff0c;开发团队只需关注应用程序逻辑和依赖项&#xff0c;而运维团队只需关注部署和管理&#xff0c;无需…

lamp安全审计之php代码审计_paper,PHP实战开发及代码审计之PHP代码审计

{getUnitName}{getLessonName}敬请期待免费{getTaskName}剩余观看时长&#xff1a;{watchLimitRemaining}回放{activityStartTimeStr}正在直播中直播结束{activityLength}免费{getTaskName}敬请期待{"id": "1619","isDefault": "1",&q…

内含福利|CSDN携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!

伴随云原生技术的成熟与落地&#xff0c;越来越多框架、中间件等开源项目相继涌现&#xff0c;帮助开发者和企业有效解决业务问题。2022年1月8日&#xff0c;CSDN携手字节跳动基础架构&#xff0c;将在北京举办第四场云原生线下Meetup。在这里&#xff0c;您可以与众多开源技术…

Flink CDC 2.0 正式发布,详解核心改进

简介&#xff1a; 本文由社区志愿者陈政羽整理&#xff0c;内容来源自阿里巴巴高级开发工程师徐榜江 (雪尽) 7 月 10 日在北京站 Flink Meetup 分享的《详解 Flink-CDC》。深入讲解了最新发布的 Flink CDC 2.0.0 版本带来的核心特性&#xff0c;包括&#xff1a;全量数据的并发…

php里的utf-8编码,php – 修复损坏的UTF-8编码

我正在修复一些糟糕的UTF-8编码.我目前正在使用PHP 5和MySQL.在我的数据库中,我有一些不良编码的实例,如&#xff1a;ƒ>数据库排序规则是utf8_general_ci> PHP正在使用正确的UTF-8标头>记事本设置为使用不带BOM的UTF-8>数据库管理在phpMyAdmin处理>并非所有重音…

unity三维地图的经纬度如何在二维地图上表示_接入C++版本recastnavigation寻路库到Unity/服务端中...

前言因为Unity版本的更新迭代&#xff0c;老版本的A*插件在新版本Unity已经无法正常使用&#xff0c;包括一些运行时代码也已经过时&#xff0c;重新接入要花费很多时间&#xff0c;干脆接入一个新的寻路方案吧。这里选择的是久负盛名的https://github.com/recastnavigation/re…

Dataphin功能:集成——如何将业务系统的数据抽取汇聚到数据中台

简介&#xff1a; 数据集成是简单高效的数据同步平台&#xff0c;致力于提供具有强大的数据预处理能力、丰富的异构数据源之间数据高速稳定的同步能力&#xff0c;为数据中台的建设打好坚实的数据基座。 数据中台是当下大数据领域最前沿的数据建设体系, 它并不是从零开始, 无中…

5G专网,路在何方?

作者 | 蜉蝣采采来源 | 无线深海话说你平常打电话、刷视频、玩游戏的4G和5G&#xff0c;一般也被叫做“公网”。这个“公”字的含义正是公开&#xff0c;公用的意思。也就是说&#xff0c;这个网络&#xff0c;不但你能用&#xff0c;你隔壁的张三也能用&#xff0c;张三的老乡…

如何开发 Node.js Native Add-on?

简介&#xff1a; 来一起为 Node.js 的 add-on 生态做贡献吧~ 作者 | 吴成忠(昭朗)这篇文章是由 Chengzhong Wu (legendecas)&#xff0c;Gabriel Schulhof (gabrielschulhof) &#xff0c;Jim Schlight (jimschlight)&#xff0c;Kevin Eady&#xff0c;Michael Dawson (mhdaw…

php范式,数据库三范式,轻松理解_PHP教程

网上搜罗了一大堆关于数据库范式理解的文章&#xff0c;都是千律一篇的复制粘贴&#xff0c;连例子都是一模一样&#xff0c;拜托有点创意好不&#xff0c;实在看不下去&#xff0c;自己写一篇个人理解三范式的文章。如果有理解上的不正确之处&#xff0c;请联系我&#xff1a;…

xxl子任务_XXL-JOB v2.1.2 发布,分布式任务调度平台

v2.1.2 Release Notes1、方法任务支持&#xff1a;由原来基于JobHandler类任务开发方式&#xff0c;优化为支持基于方法的任务开发方式&#xff1b;因此&#xff0c;可以支持单个类中开发多个任务方法&#xff0c;进行类复用XxlJob("demoJobHandler")public ReturnT …

程序员如何在业余时间提升自己?

简介&#xff1a; 在自省过程中&#xff0c;我们经常会问自己这么几个问题&#xff0c;这段时间我尝试了什么新事物、有了什么变化、得到什么成果。 近年来&#xff0c;出现越来越多“自主学习”、“业余提升" 的相关话题。 我们经常收到一些同学提问&#xff1a;程序员…

百度打造AIR智能道路系统,可降低90%交通事故

12月27日&#xff0c;百度Create 2021&#xff08;百度AI开发者大会&#xff09;在“希壤”APP召开&#xff0c;百度创始人、董事长兼CEO李彦宏在演讲中介绍了AIR&#xff08;AI Road&#xff09;智能道路系统。作为软硬一体的路端“自动驾驶系统”&#xff0c; AIR智能道路系统…