Gearman安装与使用,分布式消息队列

1 介绍:
Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。
2 组成:

  • Gearman client:提供gearman client API给应用程序调用,它是请求的发起者。
  • Gearman job server:将客户端的请求分发到各个gearman worker的调度者,相当于中央控制器,但它不处理具体业务逻辑。
  • Gearman worker:提供gearman worker API给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。

3运行过程

  • 一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。
  • Client:请求的发起者
  • Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Work
  • Worker:请求的处理者

4 gearmand安装

5 gearmand使用

5.1创建worker

<?php
$worker= new GearmanWorker();
$worker->addServer('192.168.142.130 ','4730 ');
$worker->addFunction("sendMail","my_sendmail_function");
while($worker->work());

function my_sendmail_function($job){
 //接受数据
 $tmp=$job->workload();
 $receiverArr=unserialize($tmp);      // 反序列化为数组
 
 $from=$receiveArr['from'];  //1
 $to=$receiveArr['to'];         //2
 $subject=$receiveArr['subject'];    //3
 $content=$recriver['content'];     //4

//
//发送邮件
return $subject.' sendmail OK';
 }

5.2 创建一个client
创建一个client.php。do()方法是阻塞模式,必须等待worker端返回结果,程序才能停止。

<?php
$client=new GearmanClient();//初始化一个client
$client->addServer('192.168.142.130', '4730');

$job=array();   //定义初始化一个job数组,来存放数据,把client的请求发送出去
$job['from']='CleverCode';    //1      把存放的数据存放到数组中
$job['to']='Gearman';            //2
$job['subject']='hello Gearman';  //3
$job['content']='hello Gearman:this is from GearmanClient';   //4
$job=serialize($job);               // 序列化成字符串

//等到worker端返回结果,才会结束。
$ret=$clent->do("sendMail",$job);
?>

使用PHP提供的序列化函数serialize()
j o b s e r i a l i z e = s e r i a l i z e ( job_serialize = serialize( jobserialize=serialize(job); // 序列化成字符串

接下来就是将这个字符串存入数据库即可,当我们将数据读取出来时,再将这个字符串进行反序列为数组即可
j o b r e s t o r e = u n s e r i a l i z e ( job_restore = unserialize( jobrestore=unserialize(job_serialize); // 反序列化为数组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值