资讯专栏INFORMATION COLUMN

Laravel5.4 队列简单配置与使用

_DangJin / 358人阅读

摘要:队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短请求和相应的时间。每一种队列驱动的配置都可以在该文件中找到,包括数据库,,,,以及同步本地使用驱动。处理完毕后当前任务会自动删除。基本就下面这个样到此队列简单配置与使用就结束了。

概述 什么是队列?

百度百科是这样说的

“队列”是在传输过程中保存数据的容器。

举几个生活中例子:

iphone手机新款发布,三里屯iphone进的新货。大家要排队买,不能说一大堆人一起冲进去,那么这店就完了。

你有一大堆女朋友。你不得一个一个来,一起来你也受不了 ?

C语言中堆的概念也是这样,先进先出,不能起个大早赶个晚集。

回到正题:

消息队列则是为大批量处理数据而准备的一个概念,他有很多实现方式,并不是单一的代码结构。

这里有比较专业的一篇文章:
http://www.cnblogs.com/xuyata...

还有适合新手揣摩的教程:
http://www.imooc.com/learn/852


废话说完了,彻底进入正题:

Laravel 为我们提供了一个简单并很容易配置的队列类.

引用一点官方翻译的话:

Laravel 队列为不同的后台队列服务提供统一的 API , 例如 Beanstalk,Amazon SQS, Redis,甚至其他基于关系型数据库的队列。 队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短Web请求和相应的时间。

队列配置文件存放在 config/queue.php。 每一种队列驱动的配置都可以在该文件中找到, 包括数据库, Beanstalkd, Amazon SQS, Redis, 以及同步(本地使用)驱动。 其中还包含了一个null队列驱动用于那些放弃队列的任务。

Laravel 在 5.4版本中直接提供了全局函数 dispatch(),你可以再任意地方调用。并且无需加载任何对象或者实例化类。 这个函数主要的用途就是将你的队列需求加入到指定的容器中(专业点的叫生产者,其实你大可理解为你在商城购物完排队结账的时候)

设置驱动

Laravel神奇数据库迁移我就不多说了。我相信你知道。

php artisan queue:table

php artisan migrate

执行完上面两条命令,费力打开 configqueue.php, key=default 的数组中使用env配置文件加载方式,laravel安装后默认为sync(同步),我们需要改为异步(你现在可以暂时认为同步!=队列),这里我们选择使用关系型数据库来实现队列

QUEUE_DRIVER=database
创建任务

创建任务 = 搞一个生产者 = (其实就是写一个在队列中你想执行的业务逻辑),名字随意取,但最好遵守命名规范

php artisan make:job SendReminderEmail

这个生成的文件大概分2部分:__construct() 构造方法 , handle 队列执行方法(意思就是在队列执行的时候,就用你这里面写的代码)

class SendReminderEmail implements ShouldQueue
{
    // 这块你不用搭理他
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    
    protected $name;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($name)
    {
        $this->name = $name;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        DB::table("email")->insert([
            "name" => $this->name,
            "img"=>1,
            "sort"=>1
        ]);
    }
}
生产者

随后在控制器内使用dispatch方法调用即可,下面我则for循环创建了100个业务

public function index(Request $request)
{
    for ($i = 0; $i <= 100; $i++) {
        dispatch(new SendReminderEmail("email" . $i));
    }
}

你通过数据迁移的数据表中就基本成这样了

消费者

消费者 = 队列处理 = (你在商城购物已经开始付钱了),使用下面命令则你开始消费,队列也会按照你上面的业务逻辑开始处理。处理完毕后当前任务会自动删除。

php artisan queue:work

基本就下面这个样

到此Laravel5.4 队列简单配置与使用就结束了。

更多专业吊炸天的教程请参考China Laravel
http://d.laravel-china.org/do...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25621.html

相关文章

  • Laravel5.2队列驱动expire参数设置带来的重复执行问题 数据库驱动

    摘要:已经取消了参数,都用来执行。取数据的过程事物处理已经打开。取得符合条件的队列后程序会更新该条数据,并且更新完后即。 connections => [ .... database => [ driver => database, table => jobs, queue => defaul...

    ysl_unh 评论0 收藏0
  • Laravel5.4 Queues队列学习

    摘要:提供了开箱即用的队列服务,队列允许您延迟处理耗时的任务,例如发送电子邮件,直到稍后的时间。推迟这些耗时的任务会大大加速您的应用程序的请求。 Laravel提供了开箱即用的队列服务,队列允许您延迟处理耗时的任务,例如发送电子邮件,直到稍后的时间。推迟这些耗时的任务会大大加速您的应用程序的Web请求。 一、生成队列表 php artisan queue:table php artisan...

    MonoLog 评论0 收藏0
  • Any-基于Laravel5.4新的权限管理后台骨架

    摘要:最简化权限管理系统,基于开发。基于开发,唯一优化的是用权限和路由别名绑定,这样代码写好之后就可以直接使用。如果是超级管理员,即使没有这个权限会自动赋予权限给超级管理员角色。默认管理员账号密码。然后正常执行命令其他命令即可。 Any 最简化权限管理系统,基于 Laravel5.4 开发。由于 Laravel5.5 发布推迟,只好先写个 Laravel5.4版本的,后面再升级上去。演示地址...

    Lavender 评论0 收藏0
  • laravel package收集

    摘要:查找保存下载用搭建自己的缓存仓库权限管理的好选择基于封装的后台管理系统,支持手机和端访问支付宝风格的验证器后台系统微信接口的部署脚本开发的博客系统百度推送自动记录用户行为扩展一个项目管理系统根据生成对应导航的状态 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 评论0 收藏0
  • Laravel5.4新特性-Laravel-mix和laravel-elixir比较

    摘要:之前的版本用的管理全段资源,版本开始使用的来管理。不过,并不是强制要求在开发期间使用它。发布问题标题标题编辑器容器内容发布问题实例化编辑器设置如果没有预加载,否则不会出现 Laravel5.4 之前的版本用 gulp 的 laravel-elixir管理全段资源,Laravel5.4 版本开始使用webpack 的 Laravel Mix 来管理。 一、简介 Laravel Mix 提...

    187J3X1 评论0 收藏0

发表评论

0条评论

_DangJin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<