概述

什么是队列?

百度百科是这样说的

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

举几个生活中例子: * iphone手机新款发布,三里屯iphone进的新货。大家要排队买,不能说一大堆人一起冲进去,那么这店就完了。 * 你有一大堆女朋友。你不得一个一个来,一起来你也受不了 ? * C语言中堆的概念也是这样,先进先出,不能起个大早赶个晚集。

回到正题:

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

这里有比较专业的一篇文章: http://www.cnblogs.com/xuyatao/p/6864109.html

还有适合新手揣摩的教程: 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

执行完上面两条命令,费力打开 config\queue.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/docs/5.4/queues

Laravel5.4 队列简单配置与使用的更多相关文章

  1. Docker下Python Flask+Redis+MySQL+RQ队列简单配置

    本篇博文主要讲解Docker下使用RQ队列的通信配置,主要是网上的部分文章写的不太清楚,特写一篇 作者使用docker-compose.yml文件调度各部分文件Dockerfile,起初是这样写的 v ...

  2. IBM websphere MQ远程队列的简单配置

    原理: 1.远程队列分发送方和接收方 2.接收方配置: 接收方配置要先拿到对方的发送通道配置,接收方的队列名称必须和远程发送方的队列名称一致,告诉远程发送方,你的地址,队列管理器名称等信息,在通道中建 ...

  3. RabbitMQ进阶使用-延时队列的配置(Spring Boot)

    依赖 MAVEN配置pom.xml <dependency> <groupId>org.springframework.boot</groupId> <art ...

  4. 小丁带你走进git世界一-git简单配置

    小丁带你走进git世界一-git简单配置 1.github的简单配置 配置提交代码的信息,例如是谁提交的代码之类的. git config  –global user.name BattleHeaer ...

  5. 以实际的WebGIS例子探讨Nginx的简单配置

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 以实际项目中的一个例子来详细讲解Nginx中的一般配置,其中涉 ...

  6. CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB,两条命令都可以 systemctl sta ...

  7. ssm简单配置

    MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架. MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获. MyBatis 只使用简单的XML 和注解来配置和映射 ...

  8. 安装MariaDB和简单配置

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB systemctl start maria ...

  9. BIND的进程一:DNS简单配置与的主从配置

    DNS的简单配置和DNS的主从配置   摘要:DNS(Domain-Name Server) ,DNS的服务起到的作用就是名称解析,在网络通讯来说计算机与计算机是通过IP地址相互通信的, 当是IP地址 ...

随机推荐

  1. mac item2自定义光标移动快捷键,移动行首行尾,按单词跳转

    To jump between words and start/end of lines in iTerm2 follow these steps: iTerm2 -> Preferences ...

  2. (转载)(DescriptionResource Path Location Type The superclass "javax.servlet.http.HttpServlet" was not foun

    eclipse环境下如何配置tomcat 打开Eclipse,单击"Window"菜单,选择下方的"Preferences". 单击"Server&q ...

  3. Windows下MariaDB数据搬家问题

    背景:公司买了一台服务器要将原来老服务器数据库数据导入新的服务器上,两台服务器环境如下 做好准备后开始实施,老数据库进行停库 找到MariaDB的安装目录下的整data目录进行拷贝,然后到新服务器进行 ...

  4. SEO初步学习之影响网站排名的因素

    本文介绍一些比较明显的因素,一些隐藏较深的原因还有待发掘: 1.采集网站内容,即抄袭其他网站的内容. 2.新站上传后建议不要有大的改动. 3.标题频繁修改. 4.大量投放垃圾外链. 5.不做友链,交友 ...

  5. 第22章 Makefile基础

    一.自动处理头文件的依赖关系 在Makefile中插入如下代码: include $(sources:.c=.d) %.d: %.c set -e; rm -f $@; \ $(CC) -MM $(C ...

  6. C#压缩解压zip 文件

    /// <summary> /// Zip 压缩文件 /// </summary> public class Zip { public Zip() { } #region 加压 ...

  7. 对于centos的运用ssh远程连接

    1,首先安装ssh服务器 $yum install openssh-server 2,记录你当前centos的ip地址 $ifconfig 3,再在windows里面安装putty 4安装完成后, 在 ...

  8. LGOJ4172 WC2006水管局长

    首先声明,这份代码空间复杂度 \(O(n^2)\),瓶颈在给边打标记 由于博主太菜,懒得再改成低复杂度的打标记了,所以\(BZOJ\)的数据过不去 Description link 给一张图,会有删边 ...

  9. Go-开发环境搭建

    02-开发环境搭建   目录 一 下载地址 二 安装 Linux安装 Windows安装 Mac安装 三 测试安装 四 命令介绍 基本介绍 build 和 run 命令 get 命令 一 下载地址 安 ...

  10. python-day3爬虫基础之下载网页

    今天主要学习了关于网页下载器的一些内容,下边做一下总结: 1.网页下载器,顾名思义,就是将URL所对应的网页以HTML的形式下载到本地,最终存储成本地文件或者还是本地内存字符串,然后进行后续的分析与处 ...