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中static静态变量的使用方法详解
Jun 04 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
PHP排序算法的复习和总结
Feb 15 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
php学习笔记之面向对象
Nov 08 PHP
十个PHP高级应用技巧果断收藏
Sep 25 PHP
PHP书写格式详解(必看)
May 23 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP filesize函数用法浅析
Feb 15 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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/11/23 PHP
php桌面中心(四) 数据显示
2007/03/11 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
php中stdClass的用法分析
2015/02/27 PHP
Yii2单元测试用法示例
2016/11/12 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
js的回调函数详解
2015/01/05 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python操作oracle的完整教程分享
2018/01/30 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
python3中sys.argv的实例用法
2020/04/24 Python
serialVersionUID具有什么样的特征
2014/02/20 面试题
医学院毕业生自荐信
2013/11/08 职场文书
电脑教师的教学自我评价
2013/11/26 职场文书
如何撰写岗位职责
2014/02/01 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
高中生班主任评语
2014/04/25 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
2014年关工委工作总结
2014/11/17 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
介绍信样本
2015/01/31 职场文书
节水宣传标语口号
2015/12/26 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫