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将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
php使用curl访问https示例分享
Jan 17 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
php图像处理类实例
Jul 28 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
php文件上传、下载和删除示例
Aug 28 PHP
php 修改上传文件大小限制实例详解
Oct 23 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
PHP判断一个变量是否为整数、正整数的方法示例
Sep 11 PHP
laravel框架上传图片实现实时预览功能
Oct 14 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
PHP:风雨欲来 路在何方?
2006/10/09 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
jquery移动节点实例
2015/01/14 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
python有证书的加密解密实现方法
2014/11/19 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
python os.listdir()乱码解决方案
2021/01/31 Python
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
偷看我的初中毕业鉴定
2014/01/29 职场文书
酒店经理职责
2014/01/30 职场文书
介绍信格式样本
2015/05/05 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书