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实现读取和编写XML DOM代码
Apr 07 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
Oct 30 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的性能
2013/10/30 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
深入浅出php socket编程
2015/05/13 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
jQuery实现日历效果
2020/09/11 jQuery
openlayers实现地图弹窗
2020/09/25 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
简历里的自我评价范文
2014/02/24 职场文书
护理工作个人总结
2015/03/03 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers