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

一、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

转载于:https://my.oschina.net/u/588516/blog/1607303

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值