本文实例讲述了gearman管理工具GearmanManager的安装与php使用方法。分享给大家供大家参考,具体如下:
一、gearman自带了一个gearadmin工具
查看帮助信息
| 
 
								1
						  | 
> gearadmin --help
 | 
查看状态
| 
 
								1
						  | 
> gearadmin --status
 | 
查看worker信息
| 
 
								1
						  | 
> gearadmin --workers
 | 
二、为什么要用GearmanManager
	为什么要用GearmanManager来管理我们的worker,因为我们用php编写的worker是要常驻后台运行的。
	而且一旦worker过多时,代码更新,难道要一个一个手动重启,显然这是很麻烦的。如果中途出现意外中断或内存泄漏也不好管理。
	网上的解决方案一般有如下二种:
	1、通过定时任务crontab来定时的重启worker
	2、通过php的pcntl扩展,创建多进程来运行worker,主进程监控子进程,如果子进程退出,则重新启动一个子进程来运行worker。
三、使用GearmanManager
GearmanManager下载地址:
| 
 
								1
						  | 
https://github.com/brianlmoon/GearmanManager/releases
 | 
如:GearmanManager-2.1.0.tar.gz
1、我们创建一个目录用来存放worker的代码
| 
 
								1
						  | 
> mkdir -p /data/workers
 | 
2、然后我们创建一个sum.php的worker文件,用来处理计算两个数之和。
sum.php代码如下:
| 
 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
						  | 
<?php
//注意函数名与文件名相同
function sum($job) {
//workload()获取客户端发送来的序列化数据
$data = json_decode($job->workload(), true);
//计算并返回结果
return $data[0] + $data[1];
}
 | 
当然还有面向对象式的代码如下:
| 
 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
						  | 
<?php
//注意类名与文件名相同
class sum {
public function run($job) {
//workload()获取客户端发送来的序列化数据
$data = json_decode($job->workload(), true);
//计算并返回结果
return $data[0] + $data[1];
}
}
 | 
3、解压下载的GearmanManager压缩包
| 
 
								1
 
								2
 
								3
						  | 
> tar xf GearmanManager-2.1.0.tar.gz
> mv GearmanManager-2.1.0 /data/GearmanManager
> cd /data/GearmanManager
 | 
我们只需要关心bin和etc这两个目录,etc目录下提供了三个配置文件
| 
 
								1
 
								2
 
								3
						  | 
config-advanced.ini 高级配置
config.ini 简单配置
config.php php方式的配置
 | 
配置文件说明:
| 
 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
 
								13
 
								14
 
								15
 
								16
 
								17
 
								18
 
								19
 
								20
 
								21
 
								22
 
								23
 
								24
						  | 
;全局配置
[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、我们复制配置文件,并修改成如上所示,并保存
| 
 
								1
						  | 
> mv etc/config-advanced.ini etc/GearmanManager.ini
 | 
5、运行GearmanManager
| 
 
								1
 
								2
						  | 
> cd /data/GearmanManager
> ./bin/pecl_manager.php -c /data/GearmanManager/etc/GearmanManager.ini -vvv
 | 
参数说明如下:
| 
 
								1
 
								2
 
								3
 
								4
 
								5
 
								6
 
								7
 
								8
 
								9
 
								10
 
								11
 
								12
						  | 
-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可执行文件加入环境变量
| 
 
								1
 
								2
						  | 
> echo 'export PATH=/data/php56/bin:/data/php56/sbin:$PATH' >> /etc/profile
> source /etc/profile
 | 
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/jkko123/p/6496901.html
相关文章
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
 - ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
 - 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
 - ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
 - 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
 
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
 - 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
 - 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
 - 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
 - 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
 
快网idc优惠网
QQ交流群
- 
            2025-05-27 29
 - 
            2025-05-29 43
 - 
            2025-05-25 106
 - 
            2025-05-27 22
 - 
            2025-06-04 107
 
        


    		
            	
        
        
        