美文网首页
Laravel - 队列学习一

Laravel - 队列学习一

作者: Uzero | 来源:发表于2017-06-18 11:01 被阅读0次

使用场景:处理一些耗时或者高并发的操作,把操作放到队列中异步执行,可以有效缓解系统压力、提高系 统响应速度和负载能力。常见的场景有群发邮件或秒杀等等。Laravel支持多种队列实现的驱动,本文主要以Redis进行说明。

一、安装Redis驱动

修改composer.json文件,如下:

"require": {

         "php":">=5.6.4",

         "laravel/framework":"5.4.*",

         "laravel/tinker":"~1.0",

         "predis/predis":"1.0.*",

         "dingo/api":"1.0.*@dev",

},

执行composer update即可完成安装

二、配置Redis的连接

修改.env文件,如下:

REDIS_HOST=127.0.0.1

REDIS_PASSWORD=1234qwer

REDIS_PORT=6379

三、修改默认的队列驱动

修改.env文件,如下:

QUEUE_DRIVER=redis

四、编写任务类

php artisan make:job QueueDemo

五、其他

最大失败次数设置,在任务类增加属性:

public  $tries=5;

超时设置,在任务类增加属性【队列任务最大运行时长(秒)】:

public  $timeout=120;

timeout 与 retry_after的区别查看地址

六、分发任务

分发任务到指定的 连接与队列

dispatch(new DemoQueue('李四'))->onConnection('redis')->onQueue('exam');

分发任务到指定的队列

dispatch(new DemoQueue('李四'))->onQueue('exam');

七、运行队列监听器

指定 连接&队列

php artisan queue:work redis --queue=exam

注意:队列进程开始运行后,会持续监听队列,直至你手动停止或关闭终端;为了保持队列进程queue:work持续在后台运行,需要使用进程守护程序,比如Supervisor来确保队列进程持续运行。队列进程是长生命周期的进程,会在启动后驻留内存。若应用有任何改动将不会影响到已经启动的进程。所以请在发布程序后,重启队列进程。

八、其他

进行休眠时间

当任务在队列中有效时,进程会持续处理任务,没有延迟。不过,我们可以使用sleep配置项来指定没有新的有效任务产生时的休眠时间:

php artisan queue:work –sleep=3

相关文章

  • Laravel - 队列学习一

    使用场景:处理一些耗时或者高并发的操作,把操作放到队列中异步执行,可以有效缓解系统压力、提高系 统响应速度和负载能...

  • laravel使用队列监控 Horizon

    继 laravel使用队列 ,本篇介绍更好的队列监控工具--Horizon Horizon 是 Laravel 生...

  • laravel 队列重调(自调)问题如何解决

    laravel队列重新调用、自我调用,再次调用 前言 laravel使用redis队列,跟rabbitmq等专业消...

  • 资料

    《Pro git》 学习git 搭建laravel开发环境homestead redis教程 TP消息队列 thi...

  • Laravel 文件系统及队列处理

    队列 Laravel 队列为不同的后台队列服务提供统一的 API,这些队列介质可以是 Beanstalk、Redi...

  • Laravel队列

    步骤: 驱动选择在.env环境中修改QUEUE_DRIVER=database来实现 定义任务 分发任务 启动队列...

  • Laravel 队列

    队列使用步骤1.迁移队列需要的数据表2.编写任务类3.推送任务到队列4.运行队列监听器5.处理失败的任务 使用1....

  • laravel 队列

    什么是队列,队列用来干什么的这里不再介绍! 这里使用数据库作为驱动,php artisan queue:table...

  • laravel 队列

    指导文章http://laravelacademy.org/post/6922.html就是官方的中文翻译,感谢这...

  • laravel 队列

    windows 中使用 horizon, 原文见 github, learnku 在 .env 中将 QUEUE_...

网友评论

      本文标题:Laravel - 队列学习一

      本文链接:https://www.haomeiwen.com/subject/otjiqxtx.html