首先,我们要搞明白几个概念,从小到大依次有:队列任务队列连接。 他们属于依次被包含的关,一个队列里有许多的队列任务,一个连接中可以有许多队列。

  • 队列任务:对每个用户都会进行的操作,理解为队列任务,比方说用户注册时的,我们发送验证邮件的操作,每个用户注册,我们都会进行,这样的任务我们可以把它抽象成一个队列任务
  • 队列: 许多队列挤在一起等着被处理,形成了一个队列
  • 连接: 队列的储存形式
  • 队列处理器 处理队列任务的进程

举例:

   队列任务:某个操作,例如发邮件这个操作,之后我们会用更简单的操作举例代替

  队列:队列的存在是为了方便之后的队列处理器处理对应的队列任务

  连接: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里的队列学习的更多相关文章

  1. Laravel中的队列处理

    Laravel中的队列处理 队列介绍 为什么要有消息队?这里先对其进行一个简单的介绍,方便还不了解的同学理解.在面向对象里,有一个很简单的概念--消息传递,而消息队列就可以在它上面扩展一下,把它说的更 ...

  2. laravel服务l队列资料整理

    Laravel 队列系列 —— 基于 Redis 实现任务队列的基本配置和使用 1.概述 在Web开发中,我们经常会遇到需要批量处理任务的场景,比如群发邮件.秒杀资格获取等,我们将这些耗时或者高并发的 ...

  3. .Net里的Attribute 学习

    .Net里的Attribute 学习 前两天看到书里边讲Attribute定制,结合了网上的资料,自己做了简单的登录功能,并结合了某些设计模式,有兴趣的朋友可以看下.由于时间原因,没有做过多的说明,直 ...

  4. laravel的消息队列剖析

    laravel的消息队列剖析 这篇来自于看到朋友转的58沈剑的一篇文章:1分钟实现"延迟消息"功能 在实际工作中也不止遇见过一次这个问题,我在想着以前是怎么处理的呢?我记得当初在上 ...

  5. Laravel 5.1 简单学习

    Laravel 5.1 简单学习 (1)Laravel的nginx配置,不配置或者配置错误,可能会报404或500错误,访问不到页面. location / { try_files $uri $uri ...

  6. [原创]Laravel 基于redis队列的解析

    目录 参考链接 本文环境 为什么使用队列 Laravel 中的队列 分发任务 任务队列 Worker Last-Modified: 2019年5月10日11:44:18 参考链接 使用 Laravel ...

  7. Laravel 的Artisan 命令学习

    Laravel 的Artisan 命令学习 Artisan 是 Laravel 提供的 CLI(命令行接口),它提供了非常多实用的命令来帮助我们开发 Laravel 应用.前面我们已使用过 Artis ...

  8. Laravel中利用队列发送邮件的方法示例

    https://www.jb51.net/article/121647.htm 本文主要给大家介绍了关于Laravel中队列发送邮件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的 ...

  9. laravel 定时任务通过队列发送邮件

    https://www.jianshu.com/p/f6b94596098e 关于laravel发送邮件,请先参考我的另一片文章:laravel sendcloud发送邮件,再继续往下看. 1.用da ...

随机推荐

  1. MySQL常见面试题索引、表设计

    正确使用索引的条件 1.建立索引的列的重复度不能太高 2.条件列不能参与计算 3.不能使用函数 4.条件中不能使用范围 5.不要使用like '%c' 6.条件中用or a=0 or b=1 or c ...

  2. xampp apache 安全性问题

    要禁止 Apache 显示目录结构列表,只需将 Option 中的 Indexes 去掉即可.<Directory "D:/Apa/blabla"> Options I ...

  3. 使用element-ui 的table 组件 出现表格线条不对齐的问题

    在全局css样式中添加以下代码即可: body .el-table th.gutter { display: table-cell !important }

  4. CSS3中的rem单位

    一.rem介绍 rem是什么? 它的全称是 font size of the root element (根元素的字体大小) 它是CSS3中新增加的一个尺寸(度量)单位,根节点(html)的font- ...

  5. Javascript输入输出语句

    方法 说明 归属 alert(msg) 浏览器弹出警示框 浏览器 console.log(msg) 浏览器控制台打印输出信息 浏览器 prompt(info) 浏览器弹出输入框,用户可以输入 浏览器 ...

  6. IT笑话十则(二)

    一.女程序员征婚 女程序员是这么征婚的: SELECT * FROM 男人们 WHERE 未婚=true and 同性恋=false and 有房=true and 有车=true and 条件 in ...

  7. SpringBoot系列—简单的邮件系统

    1. 效果发送效果图 2. 邮件开发准备工作 3. springboot引入mail服务 4. 启动应用,开始4种邮件发送测试 1. 效果发送效果图 连续发送了四封邮件:普通文本邮件,带附件的邮件,内 ...

  8. 一篇文章,全面掌握Git

    版本控制 版本控制就是记录项目文件的历史变化.它为我们查阅日志,回退,协作等方面提供了有力的帮助. 版本控制一般分为集中化版本控制和分布式版本控制. 集中化主要的版本数据都保存服务端. 分布式版本数据 ...

  9. UWP开发入门(25)——通过Radio控制Bluetooth, WiFi

    回顾写了许久的UWP开发入门,竟然没有讲过通过Windows.Devices.Radios.Radio来控制Bluetooth和WiFi等功能的开关.也许是因为相关的API设计的简单好用,以至于被我给 ...

  10. 用TensorFlow搭建一个万能的神经网络框架(持续更新)

    我一直觉得TensorFlow的深度神经网络代码非常困难且繁琐,对TensorFlow搭建模型也十分困惑,所以我近期阅读了大量的神经网络代码,终于找到了搭建神经网络的规律,各位要是觉得我的文章对你有帮 ...