gearman的YUM安装及PHP应用

默认的yum是没有gearmand的,需要添加源。

rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm

源添加完后

yum install gearmand libgearman-devel


wget http://pecl.php.net/get/gearman
获取php-gearman扩展


然后解压后./phpize

./configure

./make && make install

然后重启一下服务器就OK了。


测试client&worker(同步模式)


client.php

<?php


$client= new GearmanClient();
$client->addServer();
echo $client->do("reverse", "Hello World!");


?>


worker.php

<?php

$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("reverse", "my_reverse_function");
while ($worker->work());

function my_reverse_function($job)
{
 for($i = 0; $i < 10; $i++){
        sleep(1);
        echo "{$i}\n";
}
  return strrev($job->workload());
}

?>

可以看到如果多个client.php同时执行的话,只有一个worker在工作,其他的都会阻塞在那里等待结果。

然后我们测试异步模式

client-async.php

<?php


$client= new GearmanClient();
$client->addServer();
echo $client->doBackground("reverse", "Hello World!");


?>
worker.php不变。

每次执行client-async.php后立即返回,然后worker.php默默地在那执行。client-async.php执行多次后,只有一个worker在工作,gearman会在worker执行完当前任务后派发给它前面累积的任务,任务不会丢失(暂没有测试最大能够积累多少个任务)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值