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


Posted in PHP onFebruary 27, 2020

本文实例讲述了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

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

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

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

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php正则
Jul 07 PHP
PHP 中执行系统外部命令
Oct 09 PHP
php 404错误页面实现代码
Jun 22 PHP
PHP Memcached应用实现代码
Feb 08 PHP
Php Image Resize图片大小调整的函数代码
Jan 17 PHP
如何用php获取程序执行的时间
Jun 09 PHP
php接口与接口引用的深入解析
Aug 09 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 #PHP
php实现根据身份证获取精准年龄
Feb 26 #PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 #PHP
PHP实现创建一个RPC服务操作示例
Feb 23 #PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
Feb 23 #PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 #PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 #PHP
You might like
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
关于TypeScript模块导入的那些事
2018/06/12 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
python 命令行传入参数实现解析
2019/08/30 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
Python项目实战之使用Django框架实现支付宝付款功能
2021/02/23 Python
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
人力资源专员自我评价怎么写
2013/09/19 职场文书
环境科学专业求职信
2014/08/04 职场文书
见习报告格式范文
2014/11/08 职场文书
2014年科普工作总结
2014/12/06 职场文书
出生证明格式
2015/06/15 职场文书
保险公司增员口号
2015/12/25 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
解析Redis Cluster原理
2021/06/21 Redis