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 相关文章推荐
phpmyadmin操作流程
Oct 09 PHP
用PHP程序实现支持页面后退的两种方法
Jun 30 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
PHP静态成员变量
Feb 14 PHP
PHP与Web页面的交互示例详解一
Aug 04 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
文件上传程序的全部源码
2006/10/09 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
初识PHP中的Swoole
2016/04/05 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
用JS实现选项卡
2020/03/23 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
Pycharm更换python解释器的方法
2018/10/29 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
python和JavaScript哪个容易上手
2020/06/23 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
香港交友网站:be2香港
2018/07/22 全球购物
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
如何强制垃圾回收
2015/10/06 面试题
c语言常见笔试题总结
2016/09/05 面试题
中药学自荐信
2014/06/15 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
党员评议自我评价
2015/03/03 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
军训新闻稿范文
2015/07/17 职场文书