gearman管理工具GearmanManager的安装与php使用方法示例
本文实例讲述了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
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
- 使用Go开发一个简单的服务器程序
- C++ 与设计模式学习(其一)
- xz文件压缩工具的用法
- Java 中正确使用 hashCode 和 equals 方法
- C/C++ 关于生成静态库(lib)/动态库(dll)文件如何使用(基于windows基础篇)
- openwrt将LAN口改为WAN方法
- c/c++----网站及其后门(CGI应用程序)
- C/C++深度copy和浅copy
- pycharm2016版汉化方法
- 8张图理解Java
- C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
- 解决Sublime在LinuxMint下无法输入中文的问题
- 使用Redis做MyBatis的二级缓存
- C/C++ 如何劫持别人家的命令||函数||程序(只能对于window而言)
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- codeforce 272E Dima and Horses (假DFS)
- 网速慢?NO可能是路由器的原因?
- codeforce 272B Dima and Sequence
- 微软自家的.Net下的JavaScript引擎--- ClearScript
- HDU 1159.Common Subsequence【动态规划DP】
- Codeforce 270D Greenhouse Effect
- 地表最简单安装MySQL及配置的方法,没有之一
- HDOJ 1176 免费馅饼 -- 动态规划
- flex-grow计算公式
- Cypress系列(67)- 环境变量设置指南
- codeforce 270C Magical Boxes
- Java开发编程规范: 4.OOP 规约
- Codeforces 1323 div2题解ABC
- order排序
- HDU 1421 搬寝室 解题报告(超详细)