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 相关文章推荐
第十节 抽象方法和抽象类 [10]
Oct 09 PHP
用PHP的ob_start();控制您的浏览器cache!
Nov 25 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
php自定义session示例分享
Apr 22 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
Jan 21 PHP
PHP实现操作redis的封装类完整实例
Nov 14 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
PHP Redis扩展无法加载的问题解决方法
Aug 22 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 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
77A一级收信机修理记
2021/03/02 无线电
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
基于js disabled=&quot;false&quot;不起作用的解决办法
2013/06/26 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
python常用知识梳理(必看篇)
2017/03/23 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
如何理解python对象
2020/06/21 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
英国女装网上商店:I Saw It First
2018/10/18 全球购物
领导干部群众路线对照检查材料
2014/11/05 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书