尝试用Gearman实现分布式处理(PHP)

 

本文需要你已对Gearman有个大致了解,如果不知该东东是何物,请参考之前一篇转帖日志《Gearman - 分布式远程过程处理框架》

顺便再推荐两篇参考文章

http://hi.baidu.com/thinkinginlamp/blog/item/ff49972b9e7378f3e6cd40aa.html (学学Gearman)

http://www.ibm.com/developerworks/cn/opensource/os-php-gearman/index.html (用 Gearman 分发 PHP 应用程序的工作负载)

更多参考大家还是自己google吧:)

 

本文只记录我实践的过程和其中可能遇到的问题。

试验环境(虚拟机):ubuntu9.04 + PHP5.2.6

 

开始了。。。

先安装任务分发的Job端

安装Gearman server and library:

wget http://launchpad.net/gearmand/trunk/0.8/+download/gearmand-0.8.tar.gz
tar zxf gearmand-0.8.tar.gz
cd gearmand-0.8
./configure
sudo make
sudo make install

中间可能会遇到些问题:

在./configure的时候,可能会出现缺少libraries的情况,一般是缺少libevent和uuid这两个开发包,安装之。。。

sudo apt-get install libevent-dev

sudo apt-get install uuid-dev

安装完成后再重新配置安装,安装完成后执行

sudo ldconfig

 

因为本试验Client和Worker端都由PHP来实现,所以需要安装php的gearman扩展

安装Gearman PHP extension:

wget http://pecl.php.net/get/gearman-0.4.0.tgz
tar zxf gearman-0.4.0.tgz
cd gearman-0.4.0
phpize
./configure
sudo make
sudo make install

中间可能遇到的问题:

找不到phpize命令,phpize在php开发包中,所以要先安装php5-dev

sudo apt-get install php5-dev

安装完后,就可以在源码目录中执行phpize生成相关安装配置信息,接着执行后面的./configure等

make install后,它告诉你一个目录,生成的gearman.so就在那里。

根据需要考到相应PHP的扩展目录里(因为我直接用系统默认安装的php,它自动生成就在扩展中)

 

接下来修改php.ini以使php加载该模块:

php --ini

看下php.ini在哪里,sudo vim 修改之,在其中加入

extension = "gearman.so"

 

然后,开始编写client和worker端

client.php

 

worker.php

 

准备工作已经完毕,试验开始

1、启动job

gearmand -d

2、启动worker

php -c /etc/php5/apache2/php.ini worker.php

3、启动client(新开终端中打开)

php -c /etc/php5/apache2/php.ini client.php

 

屏幕显示字符串的长度 “5”

 

这里,有几点需要说明一下:

1、这里直接用php cli方式运行,添加-c参数是为了加载php.ini配置文件,以加载gearman扩展

2、worker应该做成守护进程(CLI模式),可以开启多个,这样client发起的任务就会分发到各个worker分别来执行(自动负载均衡 )

这个例子由于太过简单,即使开启多个worker也无法看出效果,不过可以通过终止其中一个,可以看出系统自动切换到其他worker继续正常执行

3、同理,client也是可以开启多个的(模型请参考之前的那边日志)

4、同时,job也可以开启多个,以避免单点故障

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值