Laravel框架异步队列配置流程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CYXLZZS/article/details/51160183

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

扫描二维码关注公众号,回复: 3490947 查看本文章
yum install beanstalkd

ubuntu:

sudo apt-get install beanstalkd

第四步

创建异步处理controller,如QueueController
在类中可以定义多个处理方法,参数有两个,第一个 job, data表示传输数在每个任务执行最后调用$job->delete();删除当前任务

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

猜你喜欢

转载自blog.csdn.net/CYXLZZS/article/details/51160183