一、gearman自带了一个gearadmin工具 
	查看帮助信息 
	查看状态 
	查看worker信息 
	二、为什么要用GearmanManager 
	为什么要用GearmanManager来管理我们的worker,因为我们用php编写的worker是要常驻后台运行的。 
	而且一旦worker过多时,代码更新,难道要一个一个手动重启,显然这是很麻烦的。如果中途出现意外中断或内存泄漏也不好管理。 
	网上的解决方案一般有如下二种: 
	1、通过定时任务crontab来定时的重启worker 
	2、通过php的pcntl扩展,创建多进程来运行worker,主进程监控子进程,如果子进程退出,则重新启动一个子进程来运行worker。 
	三、使用GearmanManager 
	GearmanManager下载地址: 
	如:GearmanManager-2.1.0.tar.gz 
	1、我们创建一个目录用来存放worker的代码 
	2、然后我们创建一个sum.php的worker文件,用来处理计算两个数之和。 
	sum.php代码如下: 
	
		
			? 
		
			
				
					| 
						 
							1 
						
							2 
						
							3 
						
							4 
						
							5 
						
							6 
						
							7 
						
							8 
					 | 
					
						
							
								<?php 
							
								 
							
								function sum($job) { 
							
								  
							
								 $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) { 
							
								   
							
								  $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 
						 
					 | 
				 
			
		 
	 
 
	-[-/a> 
	  
    |