gearman简介及安装使用
FROM: http://www.cnblogs.com/codebean/archive/2011/07/26/2117074.html
一.Gearman是什么?
Gearman是一個分發任務的程序框架。它由三部分組成,如下圖:
Gearman?Client:它提供Gearman?Client?API給我們的應用程序調用,API可以使用是?C,PHP,Perl,MySQL?UDF?等等語言,它是請求的發起者。?? Gearman?Job?Server:將客戶端的請求分發到各個Gearman?Worker的調度者,相當于中央控制器,它不負責處理具體業務邏輯。
Gearman?Worker:它提供Gearman?Worker?API給應用程序調用,具體負責客戶端的請求,并將處理結果返回給客戶端。
?
二.Gearman能干什么?
通過上面可以看出,在Gearman?Client和Gearman?Worker可以使用不同的編程語言,這給我們在不同語言通信提供了機會。比如客戶端我們用的是PHP,在具體處理的Gearman?Worker中,我們則可以使用C。
另外,由于中間的Gearman?Job?Server,它可以把一個請求分發到眾多worker中的一個,可以用來做負載均衡。
另外,Gearman在處理并發方面也是大大有用的。
?
三.Gearman的安裝使用
首先下載Gearman的相關源碼,地址:http://gearman.org/index.php?id=download。
gearmand:http://launchpad.net/gearmand/trunk/0.24/+download/gearmand-0.24.tar.gz
libgearman?(C):http://launchpad.net/gearmand/trunk/0.14/+download/gearmand-0.14.tar.gz
Gearman?PHP?Extension:http://pecl.php.net/get/gearman-0.7.0.tgz
我們為了清楚的演示,將gearmand安裝在192.168.132.30(Job?server)上面,在分別將Gearman?PHP擴展安裝的機器192.168.132.64(worker)和192.168.132.68(client)上面。Worker及client我們都使用PHP語言。
在192.168.132.30(Job?server)上面:
cd gearmand-0.24/
./configure
make
sudo make install
//如果在configure時報錯,則可能缺少包,可能需要安裝如下包:
sudo apt-get install libboost-program-options-dev libevent-dev uuid-dev
//開啟Gearmand服務
gearmand -d
在192.168.132.64(worker)和192.168.132.68(client),分別如下:
//首先安裝PHP 擴展需要的libgearmantar xvzf gearmand-0.14.tar.gz
cd gearmand
./configure
make
sudo make install
//如果在configure時報錯,則可能缺少包,可能需要安裝如下包:
sudo apt-get install libboost-program-options-dev libevent-dev uuid-dev
//安裝PHP擴展
tar xvzf gearman-0.7.0.tgz
cd gearman
phpize
./configure --with-php-config=/data0/php52/bin/php-config
make
make install
//找到PHP的配置文件php.ini,編輯它
vim php.ini
//在php.ini的末尾加上
extension=gearman.so
以上都好了以上,可以使用?php?-re?gearman看一些是不是gearman擴展安裝成功了。
下面我們來測試一下:
在192.168.132.64(worker),編輯文件worker.php:
$worker=new GearmanWorker();
$worker->addServer("192.168.132.30",4730); //連接到Job server 上
$worker->addFunction("reverse","my_reverse_function");
while ($worker->work());
function my_reverse_function($job)
{
returnstrrev($job->workload())." worker1";
}
?>
然后在后臺運行該文件:php?worker.php?&.
再編輯一個文件worker2.php,輸入內容:
?
<?php$worker=new GearmanWorker();
$worker->addServer("192.168.132.30",4730); //連接到Job server 上
$worker->addFunction("reverse","my_reverse_function");
while ($worker->work());
function my_reverse_function($job)
{
returnstrrev($job->workload())." worker2";
}
?>
在后臺運行該文件:php?worker2.php?&
在192.168.132.68(client),編輯文件?client.php:
$client=new GearmanClient();
$client->addServer("192.168.132.30",4730); //連接到Job server上
echo$client->do("reverse","Hello World!");
?>
然后多次運行php?client.php,應該可以看見輸出不同的結果。?
總結
以上是生活随笔為你收集整理的gearman简介及安装使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Debian普通用户添加sudo权限
- 下一篇: Gearman的使用