Gearman如何正确的在PHP中使用

  介绍

Gearman如何正确的在PHP中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强> Gearman可以做什么:

异步处理:图片处理,订单处理,批量邮件/通知之类的
要求高CPU或内存的处理:大容量的数据处理,MapReduce运算,日志聚集,视频编码
分布式和并行的处理
定时处理:增量更新,数据复制
限制速率的FIFO处理
分布式的系统监控任务

<强> Gearman工作原理:
使用Gearman的应用通常有三部分组成:一个客户端,一个工人,一个任务服务器。客户的作用是提出一个工作任务交给工作服务器任务服务器.Job服务器会去寻找一个合适的工人来完成这项任务.Worker执行由客户发送过来的工作,并且将结果通过工作服务器返回给Client.Gearman提供了客户机和工人的API,利用这些API应用可以同Gearman工作服务器来进行通信.Gearman内部客户机和工人之间的通信都是通过TCP连接来进行的。

 Gearman如何正确的在PHP中使用“> </p> <p> Gearman可以将工作的负载分担到不同的机器中。</p> <p> <img src=

<强> PHP接口函数
Gearman提供很多完善的扩展函数,包括GearmanClient, GearmanJob, GearmanTask, GearmanWorker,具体可以查看PHP官方手册。
这是官方提供其的例子中的一个,相当与一个并发的分发任务处理的例子

& lt; php ?      $ client =, new  GearmanClient ();   客户→美元addServer ();//,initialize 从而,results  of  our  3,“query  results"这里   $ userInfo =, friends 美元;=,posts 美元;=,空;//,却;能够sets  up  what  gearman  will  callback 用as  tasks 断开连接;returned 用我们。//,,context 美元;helps  us 知道which  function  is  being  returned  so 可以我方表示歉意//,handle  it 正确。   客户→美元setCompleteCallback(函数(GearmanTask 任务,美元,美元上下文),use (和用户信息,,,朋友,,,美元的帖子),{   美元switch (上下文)   {   case  & # 39; lookup_user& # 39;:   美元$ userInfo =,任务→数据();   打破;   case  & # 39; baconate& # 39;:   美元$ friends =,任务→数据();   打破;   case  & # 39; get_latest_posts_by& # 39;:   美元$ posts =,任务→数据();   打破;   }   });//,Here  queue 我方表示歉意up  multiple  tasks 用be  execute  * as 拷贝很多*,parallelism  as  gearmand 还要give 我们   美元客户→addTask (& # 39; lookup_user& # 39;,, & # 39; joe@joe.com& # 39;,, & # 39; lookup_user& # 39;);   美元客户→addTask (& # 39; baconate& # 39;,, & # 39; joe@joe.com& # 39;,, & # 39; baconate& # 39;);   美元客户→addTask (& # 39; get_latest_posts_by& # 39;,, & # 39; joe@joe.com& # 39;,, & # 39; get_latest_posts_by& # 39;);      echo “抓取…\ n";   $ start =, microtime(真正的);   客户→美元runTasks ();   totaltime 美元;=,number_format (microtime(真的),背后,开始,美元,2);      echo “Got  user  info :, totaltime 美元;秒:\ n";   var_dump(用户信息美元,,朋友,,帖子美元);

gearman_work。php

& lt; php ?      $ worker =, new  GearmanWorker ();   工人→美元addServer ();      工人→美元addFunction (& # 39; lookup_user& # 39;,,函数(GearmanJob 工作美元),{//,normally 你们# 39;d  so  some 非常safe  type  checking 以及query  binding 用a  database 这里。//,…以及我们# 39;re 年牢,fake 。   睡眠(3);   return  & # 39;从而,user  requested (& # 39;,只工作→美元工作量(),只& # 39;),is  7, feet  tall 以及可怕的# 39;;   });      工人→美元addFunction (& # 39; baconate& # 39;,,函数(GearmanJob 工作美元),{   睡眠(3);   return  & # 39;从而,user (& # 39;,只工作→美元工作量(),只& # 39;),is  1, degree  away 得到Kevin 培根# 39;;   });      工人→美元addFunction (& # 39; get_latest_posts_by& # 39;,,函数(GearmanJob 工作美元),{   睡眠(3);   return  & # 39;从而,user (& # 39;,只工作→美元工作量(),只& # 39;),has  no 文章,,对不起! & # 39;;   });      while (美元工人→工作());

Gearman如何正确的在PHP中使用