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 相关文章推荐
php5.2.0内存管理改进
Jan 22 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
PHP模拟asp.net的StringBuilder类实现方法
Aug 08 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
基础的WordPress插件制作教程
Nov 24 PHP
Yii2.0 模态弹出框+ajax提交表单
May 22 PHP
php好代码风格的阶段性总结
Jun 25 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
利用php获得flv视频长度的实例代码
Oct 26 PHP
php+js实现裁剪任意形状图片
Oct 31 PHP
PHP内存溢出优化代码详解
Feb 26 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数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
PHP7 windows支持
2021/03/09 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
Python探索之ModelForm代码详解
2017/10/26 Python
Python深度优先算法生成迷宫
2018/01/22 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
Python Flask框架扩展操作示例
2019/05/03 Python
python中class的定义及使用教程
2019/09/18 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
十佳大学生事迹材料
2014/01/29 职场文书
三严三实对照检查材料
2014/08/25 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
运动会通讯稿100字
2015/07/20 职场文书
车位出租协议书范本
2016/03/19 职场文书
Win11怎么修改电源模式?Win11修改电源模式的方法
2022/04/05 数码科技