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
更多關於PHP相關內容感興趣的讀者可檢視本站專題:《PHP程序與執行緒操作技巧總結》、《PHP網路程式設計技巧總結》、《PHP基本語法入門教程》、《PHP陣列(Array)操作技巧大全》、《php字串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》
希望本文所述對大家PHP程式設計有所幫助。