2020-10-28
gearman管理工具GearmanManager的安装与php使用方法示例

gearman管理工具GearmanManager的安装与php使用方法示例

本文实例讲述了gearman管理工具GearmanManager的安装与php使用方法。分享给大家供大家参考,具体如下: 一、gearman自带了一个gearadmin工具 查看帮助信息> gearadmin --help 查看状态> gearadmin --status 查看worker信息> gearadmin --workers 二、为什么要用GearmanManager 为什么要用GearmanManager来管理我们的worker,因为我们用php编写的worker是要常驻后台运行的。而且一旦worker过多时,代码更新,难道要一个一个手动重启,显然这是很麻烦的。如果中途出现意外中断或内存泄漏也不好管理。 网上的解决方案一般有如下二种:1、通过定时任务crontab来定时的重启worker2、通过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 4、我们复制配置文件,并修改成如上所示,并保存> mv etc/config-advanced.ini etc/GearmanManager.ini 5、运行GearmanManager> cd /data/GearmanManager> ./bin/pecl_manager.php -c /data/GearmanManager/etc/GearmanManager.ini -vvv 参数说明如下:-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可执行文件加入环境变量> echo 'export PATH=/data/php56/bin:/data/php56/sbin:$PATH' >> /etc/profile> source /etc/profile 更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。...
微信二维码