php简单定时执行任务(php实现 master-worker 守护多进程模式的实例代码)
类别:编程学习 浏览量:1259
时间:2022-01-14 02:22:27 php简单定时执行任务
php实现 master-worker 守护多进程模式的实例代码具体代码如下所示:
|
<?php class Worker{ public static $count = 2; public static function runAll(){ static ::runMaster(); static ::moniProcess(); } //开启主进程 public static function runMaster(){ //确保进程有最大操作权限 unmask(0); $pid = pcntl_fork(); if ( $pid > 0){ echo "主进程进程 $pid \n" ; exit ; } else if ( $pid == 0){ if (-1 === posix_setsid()){ throw new Exception( "setsid fail" ); } for ( $i =0; $i < self:: $count ; $i ++) { static ::runWorker(); } @cli_set_process_title( "master_process" ); } else { throw new Exception( "创建主进程失败" ); } } //开启子进程 public static function runWorker(){ unmask(0); $pid = pcntl_fork(); if ( $pid > 0){ // echo "创建子进程 $pid \n"; } else if ( $pid == 0){ if (-1 === posix_setsid()){ throw new Exception( "setsid fail" ); } @cli_set_process_title( "worker_process" ); while (1){ sleep(1); } } else { throw new Exception( "创建子进程失败" ); } } //监控worker进程 public function moniProcess(){ while ( $pid = pcntl_wait( $status )){ if ( $pid == -1){ break ; } else { static ::runWorker(); } } } } Worker::runAll(); |
|
ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 18200 3076 pts/0 Ss+ 14:05 0:00 bash root 6 0.0 0.0 18208 3252 pts/1 Ss 14:06 0:00 bash root 19 0.0 0.0 18204 3248 pts/2 Ss+ 14:11 0:00 bash root 64 0.0 0.2 348488 8320 ? Ss 15:32 0:00 master_process root 65 0.0 0.2 348488 8400 ? Ss 15:32 0:00 worker_process root 66 0.0 0.2 348488 8400 ? Ss 15:32 0:00 worker_process root 67 0.0 0.0 36640 2804 pts/1 R+ 15:32 0:00 ps -aux |
执行命令 kill 65,杀死进程 65 则master_process 进程会再自动开启一个子进程
|
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 18200 3076 pts/0 Ss+ 14:05 0:00 bash root 6 0.0 0.0 18208 3252 pts/1 Ss 14:06 0:00 bash root 19 0.0 0.0 18204 3248 pts/2 Ss+ 14:11 0:00 bash root 64 0.0 0.2 348488 8320 ? Ss 15:32 0:00 master_process root 66 0.0 0.2 348488 8400 ? Ss 15:32 0:00 worker_process root 68 0.0 0.1 348488 5796 ? Ss 15:34 0:00 worker_process root 69 0.0 0.0 36640 2728 pts/1 R+ 15:34 0:00 ps -aux |
总结
以上所述是小编给大家介绍的php实现 master-worker 守护多进程模式的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
原文链接:https://www.cnblogs.com/itsuibi/archive/2019/07/20/11189234.html
您可能感兴趣
- php符串使用教程(php使用scandir函数扫描指定目录下所有文件示例)
- php开发的主要技术(详解PHP神奇又有用的Trait)
- php运行模式图解(php策略模式简单示例分析区别于工厂模式)
- php图片合成处理(PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例)
- python与php(解决Python3 被PHP程序调用执行返回乱码的问题)
- php微信支付步骤(PHP实现微信提现企业付款到零钱)
- php 获取get url(PHP实现获取url地址中顶级域名的方法示例)
- php漏洞处理方法(php解决安全问题的方法实例)
- php闰年计算公式(php判断/计算闰年的方法小结三种方法)
- js脚本语言原理(实例说明js脚本语言和php脚本语言的区别)
- php开发模式有哪些(PHP设计模式之简单工厂和工厂模式实例分析)
- php连接mysql需要数据源吗(php连接mysql数据库最简单的实现方法)
- php把当前网页生成pdf(php转换上传word文件为PDF的方法基于COM组件)
- php 静态方法(PHP的静态方法与普通方法用法实例分析)
- thinkphp远程代码执行教程(ThinkPHP 5.x远程命令执行漏洞复现)
- 阿里云ecs实例详解(阿里云ecs服务器 修改php上传最大限制的方法)
- 魔兽世界 设计师爆料,原始版本并无PVP,跨阵营属于返璞归真(魔兽世界设计师爆料)
- 吐槽完《弧光大作战》之后,我们和设计师聊了聊魔兽首款手游的立项初衷和未来(吐槽完弧光大作战之后)
- 魔兽争霸3自定义战役少年杰雷 2(魔兽争霸3自定义战役少年杰雷)
- 今日菜价 芥兰涨幅最高 1.33 ,花菜降幅最高 3.10(今日菜价芥兰涨幅最高)
- 今日菜价 椰菜涨幅最高 3.25 ,水空心菜降幅最高 2.58(今日菜价椰菜涨幅最高)
- 今日菜价 红三鱼涨幅最高 4.41 ,黄鳝降幅最高 5.06(红三鱼涨幅最高)
热门推荐
- 安卓app开发用什么设计ui(AmazeUI框架搭建的方法步骤图文)
- vue监控对象变化(Vue之监听方法案例详解)
- apache服务配置详解(APACHE 多站点配置方法)
- php redis配置(php+redis实现消息队列功能示例)
- python的turtle库怎么画同心圆(详解python使用turtle库来画一朵花)
- python爬虫第一本书(我用Python抓取了7000 多本电子书案例详解)
- dockerswarm 均衡策略(以示例讲解Clickhouse Docker集群部署以及配置)
- dedecms5.7能否用5.5的模板(dedecms 5.5 伪静态设置方法)
- vue3.0全家桶教程elementui学习(vite+vue3.0+ts+element-plus快速搭建项目的实现)
- service服务启动失败(service unavailable解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9