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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
php 动态添加记录
Mar 10 PHP
php 无限级数据JSON格式及JS解析
Jul 17 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
php 中奖概率算法实现代码
Jan 25 PHP
Redis构建分布式锁
Mar 28 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
Aug 02 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
Feb 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
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
php实现三级级联下拉框
2016/04/17 PHP
使用隐藏的new来创建对象
2011/03/29 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
python 图片验证码代码分享
2012/07/04 Python
python爬虫的数据库连接问题【推荐】
2018/06/25 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
python实现ping命令小程序
2020/12/28 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
实习生体会的自我评价范文
2013/11/28 职场文书
现金出纳岗位职责
2014/03/15 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
英文演讲稿开场白
2014/08/25 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技