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

相關文章
相關標籤/搜索