本文使用的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