发布于 2016-10-15 05:33:51 | 67 次阅读 | 评论: 0 | 来源: 网友投递
Gearman 任务调度程序
Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的 任务分布非常 简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于图片resize需要消耗大量计算资 源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。
Ubuntu 12.04 安装 gearman 以及php扩展安装脚本
#!/usr/bash
#create by lhb
#date 2014-05-07
#desc install gearman and php extension for Ubuntu 12.04.4 LTS PHP 5.5
apt-get update
#安装依赖库
apt-get install libboost-all-dev gperf libevent1-dev libcloog-ppl0
mkdir -pv /home/lhb/software && cd /home/lhb/software
#下载gearman包
wget https://launchpad.net/gearmand/1.2/1.1.8/+download/gearmand-1.1.8.tar.gz
tar zxvf gearmand-1.1.8.tar.gz
cd gearmand-1.1.8/
./configure
make
make install
cd ..
apt-get install gearman-job-server
service gearman-job-server start
ps -ef |grep gearman
#安装php5-fpm
apt-get install php5-fpm php-cli php5-cli php5-dev
#下载gearman的php扩展库
wget http://pecl.php.net/get/gearman-1.1.2.tgz
tar zxvf gearman-1.1.2.tgz
cd gearman-1.1.2/
phpize
whereis php-config
./configure --with-php-config=/usr/bin/php-config
make
make install
#加入到php.ini配置
echo "extension=gearman.so" > /etc/php5/mods-available/gearman.ini
#cd /etc/php5/cli/conf.d/ && ln -s ../../mods-available/gearman.ini gearman.ini
#cd /etc/php5/fpm/conf.d/ && ln -s ../../mods-available/gearman.ini gearman.ini
for target_path in /etc/php5/cli/conf.d/ /etc/php5/fpm/conf.d/ ; do
cd $target_path && ln -s ../../mods-available/gearman.ini gearman.ini
done
service php5-fpm restart
#查看扩展是否安装成功
php --info | grep "gearman"
查看是否启动
ps auxw | grep [g]earmand
lsof -i tcp:4730
worker.php
<?php
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("lhb", "lhb_test");
while ($worker->work());
function lhb_test($job)
{
return strtoupper($job->workload());
}
?>
client.php
<?php
$client= new GearmanClient();
$client->addServer();
print $client->do("lhb", "this is a test by lhb");
print "n";
?>
测试结果: