文档章节

Yii2 使用 Beanstalk 队列

 小田天
发布于 2016/11/18 15:30
字数 408
阅读 76
收藏 0

安装

安装服务端

根据官方的教程安装,一条命令搞定。

安装 Yii2 客户端扩展

在你 Yii2 项目中执行

 
  1. $ composer require udokmeci/yii2-beanstalk "dev-master"

安装管理 Beanstalk 队列的 Web 系统

 

此项目是一个单独的系统,可以查看和管理队列任务

 

 
  1. $ composer create-project ptrofimov/beanstalk_console -s dev path/to/install

使用

开启服务端

 
  1. $ beanstalkd -l 127.0.0.1 -p 11300

Yii2 端使用

添加配置文件:

 
  1. 'components' => [
  2. // ...
  3. 'beanstalk' => [
  4. 'class' => 'udokmeci\yii2beanstalk\Beanstalk',
  5. 'host' => 127.0.0.1, // default host
  6. 'port' => 11300,
  7. 'connectTimeout' => 1,
  8. 'sleep' => false, // or int for usleep after every job
  9. ],
  10. // ...
  11. ],

执行队列在 console\controllers\WorkerController 里面:

 
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: yidashi
  5. * Date: 16/8/16
  6. * Time: 下午9:09
  7. */
  8.  
  9. namespace console\controllers;
  10.  
  11. use udokmeci\yii2beanstalk\BeanstalkController;
  12. use yii\helpers\Console;
  13. use Yii;
  14.  
  15. class WorkerController extends BeanstalkController
  16. {
  17. // Those are the default values you can override
  18.  
  19. const DELAY_PRIORITY = "1000"; //Default priority
  20. const DELAY_TIME = 5; //Default delay time
  21.  
  22. // Used for Decaying. When DELAY_MAX reached job is deleted or delayed with
  23. const DELAY_MAX = 3;
  24.  
  25. public function listenTubes(){
  26. return ["tube"];
  27. }
  28.  
  29. /**
  30. *
  31. * @param Pheanstalk\Job $job
  32. * @return string self::BURY
  33. * self::RELEASE
  34. * self::DELAY
  35. * self::DELETE
  36. * self::NO_ACTION
  37. * self::DECAY
  38. *
  39. */
  40. public function actionTube($job){
  41. $sentData = $job->getData();
  42. try {
  43. // something useful here
  44.  
  45. /*if($everthingIsAllRight == true){
  46. fwrite(STDOUT, Console::ansiFormat("- Everything is allright"."\n", [Console::FG_GREEN]));
  47. //Delete the job from beanstalkd
  48. return self::DELETE;
  49. }
  50.  
  51. if($everthingWillBeAllRight == true){
  52. fwrite(STDOUT, Console::ansiFormat("- Everything will be allright"."\n", [Console::FG_GREEN]));
  53. //Delay the for later try
  54. //You may prefer decay to avoid endless loop
  55. return self::DELAY;
  56. }
  57.  
  58. if($IWantSomethingCustom==true){
  59. Yii::$app->beanstalk->release($job);
  60. return self::NO_ACTION;
  61. }
  62.  
  63. fwrite(STDOUT, Console::ansiFormat("- Not everything is allright!!!"."\n", [Console::FG_GREEN]));
  64. //Decay the job to try DELAY_MAX times.
  65. return self::DECAY;*/
  66.  
  67. // if you return anything else job is burried.
  68. } catch (\Exception $e) {
  69. //If there is anything to do.
  70. fwrite(STDERR, Console::ansiFormat($e."\n", [Console::FG_RED]));
  71. // you can also bury jobs to examine later
  72. return self::BURY;
  73. }
  74. }
  75. }

最后记得要执行你写的 Worker:

$ php yii worker

参考文献

原文链接: http://www.getyii.com/topic/531

本文转载自:http://www.51siyuan.cn/91.html

共有 人打赏支持
粉丝 1
博文 79
码字总数 49841
作品 0
怀化
私信 提问
yii2 - Event 实例及源码分析

yii2 可以方便的使用 Event 组件基类 来实现 注册事件和监听触发 机制,每个事件都有自身的事件队列 首先要知道,yii2的事件一共有三类:对象级,类级,全局 Yii::$app 级 对象和 全局是通过...

big_cat
2016/05/27
188
0
yii2 - Behavior 实例及源码分析

Behavior 的简述 行为简单来说是组件的扩展,可以对组件的属性,方法,事件 (yii2组件的三大要点)进行扩展而无需改动组件现有的代码逻辑。即此行为所拥有的属性,方法,事件,都会被绑定它...

big_cat
2016/06/01
811
0
安装指南: 带有 RBAC 的 Yii2 高级模板

在这里我介绍一种快速简单的方法来在 Yii2 高级模版中安装 RBAC(Role Based Access Control) 系统 安装: Yii2 高级模板 在这里使用 安装 yii2 高级模板。假如你的机器中没有 请下载 它的最新...

首席烤地瓜
2016/11/10
17
0
liufee/yii2-swoole

yii2 swoole 让yii2运行在swoole上。如果您在使用中遇到问题或者想学习yii2结合swoole可以加qq群258780872一起讨论 性能 运行在swoole上的yii2是运行在php-fpm上yii2的5倍以上,而且一句代码...

liufee
2017/12/26
0
0
在 Swoole 上运行 yii2 - yii2-swoole

yii2 swoole:让yii2运行在swoole上 性能 运行在swoole上的yii2是运行在php-fpm上yii2的5倍以上,而且一句代码也不用修改。 在线demo性能体验 各个演示站点后台 用户名:feehicms 密码123456 ...

liufee
2017/12/24
139
1

没有更多内容

加载失败,请刷新页面

加载更多

【PG内核】事务ID冷冻简述

数据库代码中事务ID的类型TransactionId定义为:typedef uint32 TransactionId。因此事务ID最大值为2^32-1=4294967295。 事务ID是需要循环使用的,为了做到这一点,数据库在做vacuum时将很老...

movead
22分钟前
13
0
深入学习SpringMVC以及学习总结

一、优点: 1.SpringMVC简化web程序开发; 2.SpringMVC效率很好(单例模式); 3.SpringMVC提供了大量扩展点,方便程序员自定义功能; 如果想学习Java工程化、高性能及分布式、深入浅出。微服...

编程SHA
23分钟前
1
0
关于开源分布式事务中间件Fescar,我们总结了开发者关心的13个问题

开源分布式事务中间件 Fescar 自1月10日上线v0.1版本以来,受到了开发者们的极大关注(watch249,star3005,fork649,社区讨论的issue58,数据统计于1月17日14:00),可见,天下苦分布式事务...

阿里云官方博客
23分钟前
1
0
斯皮格尔:我们敢于采纳非常疯狂的创意

“阅后即焚”照片分享应用 Snapchat 母公司 Snap 的 CEO 埃文-斯皮格尔(Evan Spiegel)近日接受了英国《金融时报》记者的采访,谈到了该公司的未来发展,与社交网络 Facebook 的竞争,限制自己...

linuxCool
24分钟前
1
0
javaweb文件上传以及文件上传成功后但是目录中没有显示

经过看别人写的代码然后自己实际操作一遍,基本都是搬运也是为了练习。1:创建fileUpLoad.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UT......

小橙子的曼曼
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部