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实现的MySQL通用查询程序
Mar 11 PHP
自动生成文章摘要的代码[PHP 版本]
Mar 20 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
Aug 16 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
ThinkPHP 3.2 数据分页代码分享
Oct 14 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
Smarty环境配置与使用入门教程
May 11 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
php生成EXCEL的东东
2006/10/09 PHP
PHP 魔术函数使用说明
2010/05/14 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
雅虎笔试题(字符串操作)
2015/03/24 面试题
求职信模板怎么做
2014/01/26 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
高考升学宴答谢词
2015/01/20 职场文书
承诺保证书格式
2015/02/28 职场文书
Python自动化测试PO模型封装过程详解
2021/06/22 Python
使用Python开发冰球小游戏
2022/04/30 Python