laravel里的队列学习
首先,我们要搞明白几个概念,从小到大依次有:队列任务,队列,连接。 他们属于依次被包含的关系,一个队列里有许多的队列任务,一个连接中可以有许多队列。
- 队列任务:对每个用户都会进行的操作,理解为队列任务,比方说用户注册时的,我们发送验证邮件的操作,每个用户注册,我们都会进行,这样的任务我们可以把它抽象成一个队列任务
- 队列: 许多队列挤在一起等着被处理,形成了一个队列
- 连接: 队列的储存形式
- 队列处理器 处理队列任务的进程
举例:
队列任务:某个操作,例如发邮件这个操作,之后我们会用更简单的操作举例代替
队列:队列的存在是为了方便之后的队列处理器处理对应的队列任务
连接:database(也就是指mysql),redis等,我们以database为主
实战:
1.通过这个命令生成任务类: php artisan make:job SendEmail 会生成一个Jobs文件夹以及我们的任务类。
顺便建立一个Controller来负责分发任务: php artisan make:controller QueueTestController
2.具体的代码实现:
如何在控制器里新建一个job,并传递参数呢?请看:
SendEmail.php:

QueueTestController.php:

路由Route.php:

建立job数据表:
php artisan queue:table
php artisan migrate
打开.env文件
把 QUEUE_DRIVER=sync 改成 QUEUE_DRIVER=database
把它改成database,重复刚才的请求,再查看job表。
3.开启队列任务处理器
一行命令:php artisan queue:work
4.用进程管理器supervisor来让我们刚刚的任务管理器永久后台运行,否则我们只能总开着终端窗口才能使任务处理器运行。
4.1 安装
pip install supervisor
4.2 配置
supervisor的启动非常人性化,在命令行输入echo_supervisord_conf 会直接给我们一份默认的配置文件内容,我们将其复制下来,
在任意一个当前用户有权限的地方新建一个.ini或者.conf后缀结尾的文件(我创建的路径:/usr/local/etc/supervisord.ini),将内容复制进去,保存即可,但其中有一些内容需要我们略做修改
为了更直观的查看我们的进程运行情况,进行如下修改,去除httpserver和port的注释:。
这样可以让我们在浏览器里查看进程运行情况
然后最后一行做如下修改

这里面放我们的laravel-worker 配置文件,在这里创建并编辑我们的laravel-worker.ini文件

比较重要的几个参数:
command: 这里按我的理解是指 supervisor会对这个command命令所产生的进程进行管理,但是由于我们不在项目文件夹下,不能直接php artisan queue:work,所以我们在artisan前面加上我们的项目路径,被马赛克遮住的部分就是我们laravel项目的文件目录
user: 当前的系统用户名称,root等你当前使用的用户名即可
最后一行的logfile:这里要选择我们拥有权限的目录才可以,而且文件夹和文件需要我们手动帮其创建
如此一来,supervisor的配制就大工告成了
然后 surpervisord -c 配置文件目录启动,而我的命令就是:supervisord -c /usr/local/etc/supervisord.ini
在浏览器里输入http://localhost:9001,就可以看到我们的任务处理器跑起来啦
laravel里的队列学习的更多相关文章
- Laravel中的队列处理
Laravel中的队列处理 队列介绍 为什么要有消息队?这里先对其进行一个简单的介绍,方便还不了解的同学理解.在面向对象里,有一个很简单的概念--消息传递,而消息队列就可以在它上面扩展一下,把它说的更 ...
- laravel服务l队列资料整理
Laravel 队列系列 —— 基于 Redis 实现任务队列的基本配置和使用 1.概述 在Web开发中,我们经常会遇到需要批量处理任务的场景,比如群发邮件.秒杀资格获取等,我们将这些耗时或者高并发的 ...
- .Net里的Attribute 学习
.Net里的Attribute 学习 前两天看到书里边讲Attribute定制,结合了网上的资料,自己做了简单的登录功能,并结合了某些设计模式,有兴趣的朋友可以看下.由于时间原因,没有做过多的说明,直 ...
- laravel的消息队列剖析
laravel的消息队列剖析 这篇来自于看到朋友转的58沈剑的一篇文章:1分钟实现"延迟消息"功能 在实际工作中也不止遇见过一次这个问题,我在想着以前是怎么处理的呢?我记得当初在上 ...
- Laravel 5.1 简单学习
Laravel 5.1 简单学习 (1)Laravel的nginx配置,不配置或者配置错误,可能会报404或500错误,访问不到页面. location / { try_files $uri $uri ...
- [原创]Laravel 基于redis队列的解析
目录 参考链接 本文环境 为什么使用队列 Laravel 中的队列 分发任务 任务队列 Worker Last-Modified: 2019年5月10日11:44:18 参考链接 使用 Laravel ...
- Laravel 的Artisan 命令学习
Laravel 的Artisan 命令学习 Artisan 是 Laravel 提供的 CLI(命令行接口),它提供了非常多实用的命令来帮助我们开发 Laravel 应用.前面我们已使用过 Artis ...
- Laravel中利用队列发送邮件的方法示例
https://www.jb51.net/article/121647.htm 本文主要给大家介绍了关于Laravel中队列发送邮件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的 ...
- laravel 定时任务通过队列发送邮件
https://www.jianshu.com/p/f6b94596098e 关于laravel发送邮件,请先参考我的另一片文章:laravel sendcloud发送邮件,再继续往下看. 1.用da ...
随机推荐
- nginx操作目录
nginx配置文件/conf/nginx.conf 错误日志功能:los/error.log 访问日志功能:logs/access.log 站点服务请求功能配置:html/ 禁止访问功能配置 404页 ...
- Quartz3.0定时任务学习之异步调度器
前言 Quartz3与Quartz2的主要区别有两点: 1,Quartz3将它的资源类库拆的更细了,比如,想使用Quartz3开发,最少要引用Quartz,Quartz.Jobs,Quartz.Plu ...
- 09-Python之路---函数进阶
Python之路---函数进阶️ 程序员三大美德: 懒惰 因为一直致力于减少工作的总工作量. 缺乏耐性 因为一旦让你去做本该计算机完成的事,你将会怒不可遏. 傲慢 因为被荣誉感冲晕头的你会把程序写得让 ...
- 树状数组区间更新区间查询以及gcd的logn性质
题目描述 给你一个长为n的序列a m次查询 每次查询一个区间的所有子区间的gcd的和mod1e9+7的结果 输入描述: 第一行两个数n,m之后一行n个数表示a之后m行每行两个数l,r表示查询的区间 输 ...
- 树形DP 2415HDU
Bribing FIPA Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- python_serial
serial python中pyserial模块使用方法,pyserial模块封装了对串口的访问. 在支持的平台上有统一的接口. 通过python属性访问串口设置. 支持不同的字节大小.停止位.校验位 ...
- 循序渐进VUE+Element 前端应用开发(2)--- Vuex中的API、Store和View的使用
在我们开发Vue应用的时候,很多时候需要记录一些变量的内容,这些可以用来做界面状态的承载,也可以作为页面间交换数据的处理,处理这些内容可以归为Vuex的状态控制.例如我们往往前端需要访问后端数据,一般 ...
- JVM调优总结(二)-基本垃圾回收算法
可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数. ...
- PIC单片机的for定时
看到公司的一个项目上的用的for定时 但是网上查找看到<PIC16系列单片机C程序设计与PROTEUS仿真> 上有关于for语句的定时 void Delay(unsigned int n) ...
- 【C++】C++数据类型
注意:以下内容摘自文献[1],修改了部分内容. 计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数.浮点数.字符等形式).数据结构指的是数据的组织形式.例如,数组就是一种数据结构. 1. ...