gearman管理工具GearmanManager的安装与使用

1、gearman自带了一个gearadmin工具php

查看帮助信息git

1github

> gearadmin --helpjson

查看状态服务器

1函数

> gearadmin --status工具

查看worker信息spa

1调试

> gearadmin --workers日志

  

2、为何要用GearmanManager

为何要用GearmanManager来管理咱们的worker,由于咱们用php编写的worker是要常驻后台运行的。
并且一旦worker过多时,代码更新,难道要一个一个手动重启,显然这是很麻烦的。若是中途出现意外中断或内存泄漏也很差管理。

网上的解决方案通常有以下二种:
一、经过定时任务crontab来定时的重启worker
二、经过php的pcntl扩展,建立多进程来运行worker,主进程监控子进程,若是子进程退出,则从新启动一个子进程来运行worker。

 

3、使用GearmanManager

GearmanManager下载地址:

1

https://github.com/brianlmoon/GearmanManager/releases

如:GearmanManager-2.1.0.tar.gz

一、咱们建立一个目录用来存放worker的代码

1

mkdir -p /data/workers

  

二、而后咱们建立一个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];

    }

}

三、解压下载的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

四、咱们复制配置文件,并修改为如上所示,并保存

1

> mv etc/config-advanced.ini etc/GearmanManager.ini

五、运行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

相关文章
相关标签/搜索