1、gearman自带了一个gearadmin工具php
查看帮助信息git
1github |
> gearadmin --help json |
查看状态服务器
1函数 |
> gearadmin --status 工具 |
查看worker信息spa
1调试 |
> gearadmin --workers 日志 |
2、为何要用GearmanManager
为何要用GearmanManager来管理咱们的worker,由于咱们用php编写的worker是要常驻后台运行的。
并且一旦worker过多时,代码更新,难道要一个一个手动重启,显然这是很麻烦的。若是中途出现意外中断或内存泄漏也很差管理。
网上的解决方案通常有以下二种:
一、经过定时任务crontab来定时的重启worker
二、经过php的pcntl扩展,建立多进程来运行worker,主进程监控子进程,若是子进程退出,则从新启动一个子进程来运行worker。
3、使用GearmanManager
GearmanManager下载地址:
1 |
https: //github.com/brianlmoon/GearmanManager/releases |
如:GearmanManager-2.1.0.tar.gz
一、咱们建立一个目录用来存放worker的代码
1 |
> mkdir -p /data/workers |
二、而后咱们建立一个sum.php的worker文件,用来处理计算两个数之和。
sum.php代码以下:
1 2 3 4 5 6 7 8 |
<?php //注意函数名与文件名相同 function sum( $job ) { //workload()获取客户端发送来的序列化数据 $data = json_decode( $job ->workload(), true); //计算并返回结果 return $data [0] + $data [1]; } |
固然还有面向对象式的代码以下:
1 2 3 4 5 6 7 8 9 10 |
<?php //注意类名与文件名相同 class sum { public function run( $job ) { //workload()获取客户端发送来的序列化数据 $data = json_decode( $job ->workload(), true); //计算并返回结果 return $data [0] + $data [1]; } } |
三、解压下载的GearmanManager压缩包
1 2 3 |
> tar xf GearmanManager-2.1.0.tar.gz > mv GearmanManager-2.1.0 /data/GearmanManager > cd /data/GearmanManager |
咱们只须要关心bin和etc这两个目录,etc目录下提供了三个配置文件
1 2 3 |
config-advanced.ini 高级配置 config.ini 简单配置 config.php php方式的配置 |
配置文件说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
;全局配置 [GearmanManager] ;指定服务器,可添加多个,用逗号分割 host=192.168.1.111:4730,192.168.1.222:4730 ;worker文件存放目录,可添加多个,用逗号分割 worker_dir=/data/workers ;要加载的worker,默认全部 include =* ;运行全部worker进程数 count =10 ;worker专用进程数,好比总数是10个,有10个worker,每一个worker一个进程 dedicated_count=1 ;worker最大有效期,单位秒 max_worker_lifetime=3600 ;监控worker目录的代码更新,发现代码更新,则杀掉进程,从新加载代码。 auto_update=1 ;超时时间 timeout = 300 ;固然咱们也能够对指定的某个worker进行配置 [sum] ;指定5个进程 dedicated_count=5 ;5个进程都只作sum工做 dedicated_only=1 |
四、咱们复制配置文件,并修改为如上所示,并保存
1 |
> mv etc/config-advanced.ini etc/GearmanManager.ini |
五、运行GearmanManager
1 2 |
> cd /data/GearmanManager > ./bin/pecl_manager.php -c /data/GearmanManager/etc/GearmanManager.ini -vvv |
参数说明以下:
1 2 3 4 5 6 7 8 9 10 11 12 |
-P 管理进程pid文件所在目录,配置文件中经过pid_file来指定 -d 以守护进程形式运行 -u 指定守护进程的用户 -w 指定worker目录,固然配置文件里有配置,这里能够不用 -c 指定配置文件 -l 指定日志存放目录,若是没指定,则输出到标准输出stdout -h 指定服务器,例如: 192.168.1.111:4730,192.168.1.222:4730 -v 只记录启动与关闭信息 -vv 进程的建立与退出信息 -vvv 关于worker信息和所作工做 -vvvv 调试信息 -vvvvv 全部信息 |
若是出现/usr/bin/env: php: 没有那个文件或目录,请把php可执行文件加入环境变量
1 2 |
> echo 'export PATH=/data/php56/bin:/data/php56/sbin:$PATH' >> /etc/profile > source /etc/profile |

