一.设置存储方式

  在config/queue.php中查看队列驱动,在.env 设置【QUEUE_DRIVER】

  主要介绍数据库驱动

二.数据库驱动

  1.修改.env

CACHE_DRIVER=file // 这个值按理不会影响队列使用,但测试的时候发现,这个值设为redis,且redis服务未启动,在执行php artisan queue:work会出现连接redis失败的错误,因此当QUEUE_DRIVER不为redis时,CACHE_DRIVER也不能为redis。原因不明
QUEUE_DRIVER=database

  2.创建job表

  php artisan queue:table
  php artisan migrate

我在重新测试的时候,执行php artisan queue:table

报错:include(\vendor\composer/../../database/migrations/2017_03_31_165417_create_jobs_table.php,

解决:composer dump-autoload

  3.创建任务文件

php artisan make:job insertJob

  查看生成的文件:app\Jobs\InsertJob.php

<?php

namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\DB; class InsertJob implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels; /**
* Create a new job instance.
*
* @return void
*/
public function __construct(){} /**
* 执行任务代码
*
* @return void
*/
public function handle()
{
DB::table('comments')->insert(['content'=>'测试任务']);
}
}

  4.在控制器中调用任务

app\Http\Controllers\TestJobController.php

<?php
namespace App\Http\Controllers;
use Carbon\Carbon;
use App\Jobs\InsertJob; class TestJobController extends Controller
{
public function testJob()
{
// 表示一分钟后执行任务
$job = (new InsertJob())->delay(Carbon::now()->addMinute(1));
dispatch($job);
}
}

访问相应路由后,在jobs表会生成一条待执行任务的数据:

  5.启用任务队列

php artisan queue:work

一分钟后出现:

说明执行成功,jobs表中的任务数据被删除,comments表新增了一条数据

  6.如果只是先把任务放入队列,之后再手动执行任务(可以和定时任务配合使用)

$job = (new SendReminderEmail())->onQueue('high');
dispatch($job);
php artisan queue:work --queue=high,low #指定要执行的队列名

三.redis驱动,流程和数据库驱动一样,只是不用建表,不详叙

Laravel --- Laravel 5.3 队列使用方法的更多相关文章

  1. Laravel 5.2 教程 - 队列

    一.简介 Laravel 队列组件提供一个统一的 API 集成了许多不同的队列服务,队列允许你延后执行一个耗时的任务,例如延后至指定的时间才发送邮件,进而大幅的加快了应用程序处理请求的速度. 由于本例 ...

  2. laravel的延迟消息队列

    laravel的延迟消息队列 这篇来自于看到朋友转的58沈剑的一篇文章:1分钟实现"延迟消息"功能(http://mp.weixin.qq.com/s?__biz=MjM5ODYx ...

  3. 使用 Composer 安装Laravel扩展包的几种方法

    使用 Composer 安装Laravel扩展包的几种方法 以下的三种方法都是需要你在项目的根目录运行 第一种:composer install 如有 composer.lock 文件,直接安装,否则 ...

  4. php laravel v5.1 消息队列

    * install https://laravel.com/docs/5.1#installationcomposer create-project laravel/laravel msgq &quo ...

  5. [Laravel] Laravel的基本数据库操作部分

    [laravel] laravel的数据库配置 找到程序目录结构下.env文件 配置基本的数据库连接信息 DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=blog ...

  6. [Laravel] Laravel的基本使用

    [Laravel] Laravel的基本HTTP路由 使用Laravel的基本路由,实现get请求响应,找到文件app/Http/routes.php 调用Route的静态方法get(),实现get响 ...

  7. java中PriorityQueue优先级队列使用方法

    优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最高优先权的元素. PriorityQueue是从JDK1.5开始提供的新的数据结构接口. 如果不提供Comparator的话,优先 ...

  8. laravel/laravel和laravel/framework有何区别?

    在安装laravel的时候,我们一般是download github上的laravel/laravel,随后执行composer install,在这个过程中,你会发现composer其中的一项工作是 ...

  9. 《转》JAVA中PriorityQueue优先级队列使用方法

    该文章转自:http://blog.csdn.net/hiphopmattshi/article/details/7334487 优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最 ...

  10. 用composer安装 Laravel | Laravel需要的环境配置

    一:安装 参考网站 http://v4.golaravel.com/docs/4.2/installation 1.先确保安装好了PHP,和服务器环境 2.然后下载composer可执行文件到当前目录 ...

随机推荐

  1. Scala-Numbers

    Scala之Numbers 一.前言 前面已经学习了Scala中的String,接着学习Scala的Numbers. 二.Numbers 在Scala中,所有的数字类型,如Byte,Char,Doub ...

  2. FMXUI - UI.Dialog 示例(比较漂亮)

    在 FMXUI 开源库,增加了 UI.Dialog 单元.此单元实现了跨平台的基础对话框组件.使用时引用 UI.Dialog 即可.如果需要自定义对话框的样式, 可以添加一个 TDialogStyle ...

  3. EF codefirst第一篇

    一直以来喜欢dbfirst  因为简单,一直不明白为什么codefirst会是主流,根据对ddd的学习终于知道了codefirst的目的 本文是对博客园 小崔的笔记本 文章 EF实体框架之CodeFi ...

  4. 參数传递(引用,指针,值传递)C++11

    C++中,函数的參数传递方式有值传递.地址传递.传地址有指针和引用方式. 在函数參数中,传地址的理由有: 1.使被调函数能够改动主调函数中的数据对象: 2.传地址能够降低数据拷贝,提高程序运行速度. ...

  5. Java利用Zxing生成二维码

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法,现在我简单介绍一下使用Java利用Zxing生成与解析二维码 1.二维码的生成 1.1 将Zxing ...

  6. Oracle使用dblink连接SqlServer

    使用场景:当你需要从ORACLE数据库上访问另一台SqlServer数据库的数据时,Oracle提供了一个工具:gateways.通过这个工具,你可以创建dblink来连接sqlserver或其他不同 ...

  7. 关于 Swift 中的 Array.contains 方法

    Swift 2.0 中对语言进行了又一次的改进,这次将整个语言变得更加面向对象化,比如在 Swift 1.x 中如果要判断某个元素是否在数组中,就需要用到 contains 函数: if contai ...

  8. 一步一步造个IoC轮子(一):IoC是什么

    一步一步造个Ioc轮子目录 一步一步造个IoC轮子(一):IoC是什么 一步一步造个IoC轮子(二):详解泛型工厂 一步一步造个IoC轮子(三):构造基本的IoC容器 前言 .net core正式版前 ...

  9. WPF 创建无边框的圆角窗口

    原文:WPF 创建无边框的圆角窗口 如题所述,在WPF中要创建一个没有边框且为圆角的窗体,有如下几步工作要进行: 第一步:去掉窗体默认样式的边框 首先将窗体的背景设为透明,将允许透明的属性设置为Tru ...

  10. UWP开发学习笔记2

    RelativePanel控件: 用法 描述 RelativePanel.Above 设置当前element为目标element的上方 RelativePanel.AlignBottomWith 设置 ...