Laravel框架异步队列配置流程
来源:互联网 发布:php在线升级原理 编辑:程序博客网 时间:2024/05/29 03:01
本文使用的laravel框架是4.0版本
首先说一下什么是异步操作,一般什么情况下需要使用异步操作。(这里我们使用简单通俗的表述,大致明白其意思,非官方定义。可以自己进一步上网查阅更加详细的描述)。在我的理解,异步操作是和同步操作相对应的一个概念,异步操作不需要马上知道操作的结果,当前操作不会影响下一步操作。使用异步操作一般具备两个特点:一是并不需要马上知道结果;二是比较费时,为了提高操作的流畅性而将费时的操作进行异步处理,典型的操作就是发邮件。
比如注册过程,用户提交资料后,需要给用户发送一个激活邮件。发送激活邮件这个操作如果作为提交资料的一部分同步执行,则会降低用户注册的效率,严重的后果可能就是丢失用户。将发送激活邮件异步处理后,用户基本信息提交马上可以保存并反馈,至于异步处理的发送激活邮件则不管用户什么时候收到该邮件都可以去邮箱处理,这样就减少了用户的注册时间。
当然上面讲的对于标题而言都是一些废话,我们还是重点放在配置流程上面吧
查阅laravel的官方文档,我们可以看到有一个队列queue,队列的配置文件在
app/config/queue.php
在这个文件里您将可以找到框架中每种不同的队列服务的连接配置,其中包含了 Beanstalkd,IronMQ,Amazon SQS,Redis,以及同步(本地端使用)驱动设定。默认情况下是使用同步操作,这里我们将采用第一种Beanstalkd作为队列服务
第一步
我们修改队列配置文件,将default改为beanstalkd
'default' => 'beanstalkd'
第二步
为laravel添加beanstalkd的依赖,在项目根目录下执行:
composer require pda/pheanstalk "2.0.*"
第三步
安装beanstalkd(队列服务器)
mac:
brew install beanstalkd
centos:
yum install beanstalkd
ubuntu:
sudo apt-get install beanstalkd
第四步
创建异步处理controller,如QueueController
在类中可以定义多个处理方法,参数有两个,第一个
class QueueController{ /** * 异步发送邮件 * * @param $job * @param $data */ public function handleEmail($job, $data){ $emailApi = new EmailApi(); $emailApi->sendMail($data['from'], $data['to'], $data['subject'], $data['body']); $job->delete(); } /** * 异步post请求 * * @param $job * @param $data */ public function handlePostURL($job, $data){ $url = $data["url"]; $params = $data["params"]; post_url($url, $params); $job->delete(); }}
第五步
将需要异步处理的操作添加到队列中
Queue::push('QueueController@handleEmail', $data);
第六步
启动队列服务器beanstalkd(后台执行),默认端口11300
beanstalkd&
第七步
启动监听队列,项目根目录下执行(后台执行)
php artisan queue:listen&
到这里流程就走完了,可以测试一下
错误总结
1.若在第二步中出现Could not load package intervention/image in http://packagist.org之类的错误提示,则在项目根目录在执行
composer self-update
- Laravel框架异步队列配置流程
- laravel 异步消息队列
- 搭建Laravel框架流程
- Laravel框架执行流程
- Laravel框架执行流程
- Laravel框架执行流程
- laravel等框架基本流程
- 配置laravel框架
- laravel框架monlog配置
- laravel 队列的驱动配置
- laravel框架学习-配置,路由
- laravel框架 安装使用配置
- Laravel框架路由配置、设置
- laravel和yii框架的加载流程
- 异步队列发送邮件的流程
- laravel队列
- Laravel框架中实现supervisor执行异步进程
- SpringMVC框架配置流程
- ListView 各行变色写法
- iOS UITextFieldDelegate 代理方法小结
- Lesson 1: Using Quartz
- 各种第三方的分享
- Behavior子类SwipeDismissBehavior简单分析
- Laravel框架异步队列配置流程
- andorid 中android:id="@+id/btn"跟android:id="@android:id/tabhost" 区别
- linux内核部件--通用双向链表list
- 优秀博客
- Potato项目文档(2)
- Arm平台 Qt检测U盘插拔(三)hotplug-recv()阻塞
- 【IOS开发】 XMPP 简介和 XMPP 框架导入工程文件
- iOS crash dSYM
- 使用Gradle构建Android项目