Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

CentOS Gearman 安裝與 PHP 擴展整合無錯實戰指南

編輯:Linux 教學

Gearman 架構角色

  • Client:發起任務請求(C、PHP、Perl、MySQL UDF...)。
  • Job Server (gearmand):調度分發,將請求路由給合適 Worker。
  • Worker:實際執行任務(C、PHP、Perl...)。

跨語言、支援多 Worker 實現分散式負載均衡。

完整安裝步驟

1. libevent(gearmand 依賴)


wget https://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gz
tar zxvf libevent-1.4.12-stable.tar.gz
cd libevent-1.4.12-stable
./configure --prefix=/usr
make && make install
/sbin/ldconfig
cd ..

2. Gearman Server & Library


wget https://launchpad.net/gearmand/trunk/0.9/+download/gearmand-0.9.tar.gz
tar zxvf gearmand-0.9.tar.gz
cd gearmand-0.9
./configure
make && make install
/sbin/ldconfig
cd ..

3. PHP Gearman Extension


wget https://pecl.php.net/get/gearman-0.5.0.tgz
tar zxvf gearman-0.5.0.tgz
cd gearman-0.5.0
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-gearman
make && make install
cd ..

php.ini 載入


extension = "gearman.so"

啟動 Job Server


gearmand -d                 # 一般用戶
gearmand -d -u root         # root 用戶
# 預設監聽 4730 port
ps aux | grep gearman       # 驗證進程

Worker 範例 (PHP)


<?php
$worker = new GearmanWorker();
$worker->addServer('127.0.0.1', 4730);
$worker->addFunction('reverse', 'my_reverse_function');
while ($worker->work());

function my_reverse_function($job) {
    return strrev($job->workload());
}
?>

php /var/www/html/worker.php &   # 背景執行

Client 範例 (PHP)


<?php
$client = new GearmanClient();
$client->addServer('127.0.0.1', 4730);
echo $client->do('reverse', 'Hello World!'), "\n";
?>

php /var/www/html/client.php
# 輸出:!dlroW olleH

非同步任務與負載均衡

  • $client->doBackground('sendEmail', serialize($emailData)):非阻塞分發,Client 立即繼續。
  • 啟動多個 Worker(不同檔案、不同回傳值),Job Server 自動輪詢分發,驗證負載均衡。

守護進程參數


gearmand -L 192.168.0.1 -p 4730 -u root -d

命令列工具快速體驗(無需 PHP)


# Worker
gearman -w -f wc -- wc -l &
# Client
gearman -f wc < /etc/passwd
Copyright © Windows教程網 All Rights Reserved