PHP实现异步处理利器-Gearman

通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下,Gearman也能实现类似的作用,而且更简单易用。

一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。

Client:请求的发起者,可以是C,PHP,Perl,MySQL UDF等等。

Job:请求的调度者,用来负责协调把Client发出的请求转发给合适的Work。

Worker:请求的处理者,可以是C,PHP,Perl等等。

因为Client,Worker并不限制用一样的语言,所以有利于多语言多系统之间的集成。

甚至我们通过增加更多的Worker,可以很方便的实现应用程序的分布式负载均衡架构。

下面看看如何安装运行一个例子,条件所限,我们把Client,Job,Worker三个角色运行在一台服务器上:

安装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

make

make install

安装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

make

make install

编辑php.ini配置文件加载相应模块并使之生效:

extension = "gearman.so"

启动Job:

gearmand -d

如果当前用户是root的话,则需要这样操作:

gearmand -d -u root

缺省会使用4730端口,下面会用到。

注意:如果找不到gearmand命令的路径,别忘了用whereis gearmand确认。

编写Worker:

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());

}

?>

设置后台运行work:

php worker.php &

编写Client:

client.php文件内容如下:

<?php

$client= new GearmanClient();

$client->addServer('127.0.0.1', 4730);

echo $client->do('reverse', 'Hello World!'), "\n";

?>

运行client:

php client.php

输出:!dlroW olleH

出于方便的考虑,Worker,Client使用的都是PHP,但这并不影响演示,实际应用中,你完全可以通过Gearman集成不同语言实现的Worker,Client。或许此时你还想了解前面提到的负载均衡功能:很简单,只要增加多个Worker即可,你可以按照worker.php的样子多写几个类似的文件,并设置不同的返回值用以识别演示效果。然后依次启动这几个Worker文件,并多次使用client.php去请求,你就会发现Job会把Client请求转发给不同的Worker。

命令工具

如果你觉得安装PHP之类的东西太麻烦的话,你也可以仅仅通过命令行工具来体验Gearman的功能:

启动Worker:gearman -w -f wc -- wc -l &

运行Client:gearman -f wc < /etc/passwd

具体可以参考官方文档,还有一些不错的PDF

最新评论:

no.14857 armanprebf 31.184.238.148 2018-08-18 05:10

The value of science in everyday life essay writing Labor welfare essay writing Necessity is the mother op invention essay writing Art and morality essay writing College student union essay writing [url=https://academic365.site/]buy a cover letter[/url] A boat-trip in moonlight essay writing Science and human life essay writing All things both great and small essay writing Career as an accountant essay writing The problem of national integration essay writing The evils of industrialism essay

no.14856 armanprebf 31.184.238.148 2018-08-15 06:41

Pros of genetic engineering essay writing He prayth best who loveth best essay writing Friendship essay writing Labor welfare essay writing An air-flight essay writing [url=https://academic365.site/]buy resumes online[/url] National defense essay writing The one-act play essay writing Middle class unemployment essay writing Parliamentary democracy essay writing A railway station essay writing The science of engineering essay writing Your favorite scientist essay writing The probable secret of

no.13156 support 5.188.211.26 2018-01-09 14:21

qF2ADK https://goldentabs.com/

no.10208 defqbi343 188.143.232.32 2016-06-08 13:39

Whoa, whoa, get out the way with that good inroimatfon.

no.2718 renatafefer 193.105.210.84 2012-05-23 15:29

Мы предлагаем: скачать xrumer 3, xrumer torrent, xrumer 4.0 скачать, xrumer 4.0 crack, хрумер. Программа XRumer (xrumer бесплатно). жми.

no.2648 tyxyotdiio 193.105.210.84 2012-04-20 05:36

Магазин электронных сигарет: электронные сигареты владикавказ, электронная сигарета пушкино, электронная сигарета турбо, электронная сигарета gamucci premier, электронные сигареты знаменитости.

no.2582 lbvzuuwfuusyhe 193.105.210.84 2012-03-18 07:25

Мы предлагаем: xrumer 5.0 скачать бесплатно, продам хрумер, хрумер 5, как спамить хрумером, xrumer 7 cracked. Программа XRumer (скачать xrumer 5.0).

no.2563 xtgyxluffbqady 193.105.210.84 2012-03-08 14:17

Магазин обуви: мерелл женская обувь Liska (Лиска), модельная женская обувь оптом Liska (Лиска), каталог модной женской обуви Liska (Лиска), женская обувь осень 2010 2011 Liska (Лиска), женская обувь тимберленд Liska (Лиска).

no.1396 domr 219.133.62.73 2010-03-29 16:35

嗯这个发邮件时有用

no.1051 1weqr 222.92.64.98 2009-09-29 14:39

"沙发"是什么意思?
fangzi 2009-09-29 20:19

你OUT了

no.1032 yaotou000 123.145.6.243 2009-09-19 01:11

成哥,偶来留个脚印...

发表评论:

邮箱: