本文实例讲述了gearman管理工具GearmanManager的安装与php使用方法。分享给大家供大家参考,具体如下:
一、gearman自带了一个gearadmin工具
查看帮助信息
> gearadmin --help
查看状态
> gearadmin --status
查看worker信息
> gearadmin --workers
二、为什么要用GearmanManager
为什么要用GearmanManager来管理我们的worker,因为我们用php编写的worker是要常驻后台运行的。
而且一旦worker过多时,代码更新,难道要一个一个手动重启,显然这是很麻烦的。如果中途出现意外中断或内存泄漏也不好管理。
网上的解决方案一般有如下二种:
1、通过定时任务crontab来定时的重启worker
2、通过php的pcntl扩展,创建多进程来运行worker,主进程监控子进程,如果子进程退出,则重新启动一个子进程来运行worker。
三、使用GearmanManager
GearmanManager下载地址:
https://github.com/brianlmoon/GearmanManager/releases
如:GearmanManager-2.1.0.tar.gz
1、我们创建一个目录用来存放worker的代码
> mkdir -p /data/workers
2、然后我们创建一个sum.php的worker文件,用来处理计算两个数之和。
sum.php代码如下:
<?php //注意函数名与文件名相同 function sum($job) { //workload()获取客户端发送来的序列化数据 $data = json_decode($job->workload(), true); //计算并返回结果 return $data[0] + $data[1]; }
当然还有面向对象式的代码如下:
<?php //注意类名与文件名相同 class sum { public function run($job) { //workload()获取客户端发送来的序列化数据 $data = json_decode($job->workload(), true); //计算并返回结果 return $data[0] + $data[1]; } }
3、解压下载的GearmanManager压缩包
> tar xf GearmanManager-2.1.0.tar.gz > mv GearmanManager-2.1.0 /data/GearmanManager > cd /data/GearmanManager
我们只需要关心bin和etc这两个目录,etc目录下提供了三个配置文件
config-advanced.ini 高级配置 config.ini 简单配置 config.php php方式的配置
配置文件说明:
;全局配置 [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
内容版权声明:除非注明,否则皆为本站原创文章。