1. 程式人生 > 程式設計 >gearman管理工具GearmanManager的安裝與php使用方法示例

gearman管理工具GearmanManager的安裝與php使用方法示例

本文例項講述了gearman管理工具GearmanManager的安裝與php使用方法。分享給大家供大家參考,具體如下:

一、gearman自帶了一個gearadmin工具

檢視幫助資訊

> gearadmin --help

檢視狀態

> gearadmin --status

檢視worker資訊

> gearadmin --workers

二、為什麼要用GearmanManager

為什麼要用GearmanManager來管理我們的worker,因為我們用php編寫的worker是要常駐後臺執行的。
而且一旦worker過多時,程式碼更新,難道要一個一個手動重啟,顯然這是很麻煩的。如果中途出現意外中斷或記憶體洩漏也不好管理。

網上的解決方案一般有如下二種:
1、通過定時任務crontab來定時的重啟worker
2、通過php的pcntl擴充套件,建立多程序來執行worker,主程序監控子程序,如果子程序退出,則重新啟動一個子程序來執行worker。

三、使用GearmanManager

GearmanManager下載地址:

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

如:GearmanManager-2.1.0.tar.gz

1、我們建立一個目錄用來存放worker的程式碼

> mkdir -p /data/workers

2、然後我們建立一個sum.php的worker檔案,用來處理計算兩個數之和。

sum.php程式碼如下:

<?php
//注意函式名與檔名相同
function sum($job) {
 //workload()獲取客戶端傳送來的序列化資料
 $data = json_decode($job->workload(),true);
 //計算並返回結果
 return $data[0] + $data[1];
}

當然還有面向物件式的程式碼如下:

<?php
//注意類名與檔名相同
class sum {
 public function run($job) {
  //workload()獲取客戶端傳送來的序列化資料
  $data = json_decode($job->workload(),true);
  //計算並返回結果
  return $data[0] + $data[1];
 }
}

3、解壓下載的GearmanManager壓縮包

> tar xf GearmanManager-2.1.0.tar.gz
> mv GearmanManager-2.1.0 /data/GearmanManager
> cd /data/GearmanManager

我們只需要關心bin和etc這兩個目錄,etc目錄下提供了三個配置檔案

config-advanced.ini 高階配置
config.ini 簡單配置
config.php php方式的配置

配置檔案說明:

;全域性配置
[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、我們複製配置檔案,並修改成如上所示,並儲存

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

5、執行GearmanManager

> cd /data/GearmanManager
> ./bin/pecl_manager.php -c /data/GearmanManager/etc/GearmanManager.ini -vvv

引數說明如下:

-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可執行檔案加入環境變數

> echo 'export PATH=/data/php56/bin:/data/php56/sbin:$PATH' >> /etc/profile
> source /etc/profile

gearman管理工具GearmanManager的安裝與php使用方法示例

gearman管理工具GearmanManager的安裝與php使用方法示例

更多關於PHP相關內容感興趣的讀者可檢視本站專題:《PHP程序與執行緒操作技巧總結》、《PHP網路程式設計技巧總結》、《PHP基本語法入門教程》、《PHP陣列(Array)操作技巧大全》、《php字串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》

希望本文所述對大家PHP程式設計有所幫助。