Laravel --- Laravel 5.3 队列使用方法
一.设置存储方式
在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 队列使用方法的更多相关文章
- Laravel 5.2 教程 - 队列
一.简介 Laravel 队列组件提供一个统一的 API 集成了许多不同的队列服务,队列允许你延后执行一个耗时的任务,例如延后至指定的时间才发送邮件,进而大幅的加快了应用程序处理请求的速度. 由于本例 ...
- laravel的延迟消息队列
laravel的延迟消息队列 这篇来自于看到朋友转的58沈剑的一篇文章:1分钟实现"延迟消息"功能(http://mp.weixin.qq.com/s?__biz=MjM5ODYx ...
- 使用 Composer 安装Laravel扩展包的几种方法
使用 Composer 安装Laravel扩展包的几种方法 以下的三种方法都是需要你在项目的根目录运行 第一种:composer install 如有 composer.lock 文件,直接安装,否则 ...
- php laravel v5.1 消息队列
* install https://laravel.com/docs/5.1#installationcomposer create-project laravel/laravel msgq &quo ...
- [Laravel] Laravel的基本数据库操作部分
[laravel] laravel的数据库配置 找到程序目录结构下.env文件 配置基本的数据库连接信息 DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=blog ...
- [Laravel] Laravel的基本使用
[Laravel] Laravel的基本HTTP路由 使用Laravel的基本路由,实现get请求响应,找到文件app/Http/routes.php 调用Route的静态方法get(),实现get响 ...
- java中PriorityQueue优先级队列使用方法
优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最高优先权的元素. PriorityQueue是从JDK1.5开始提供的新的数据结构接口. 如果不提供Comparator的话,优先 ...
- laravel/laravel和laravel/framework有何区别?
在安装laravel的时候,我们一般是download github上的laravel/laravel,随后执行composer install,在这个过程中,你会发现composer其中的一项工作是 ...
- 《转》JAVA中PriorityQueue优先级队列使用方法
该文章转自:http://blog.csdn.net/hiphopmattshi/article/details/7334487 优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最 ...
- 用composer安装 Laravel | Laravel需要的环境配置
一:安装 参考网站 http://v4.golaravel.com/docs/4.2/installation 1.先确保安装好了PHP,和服务器环境 2.然后下载composer可执行文件到当前目录 ...
随机推荐
- Logical partitioning and virtualization in a heterogeneous architecture
A method, apparatus, and computer usable program code for logical partitioning and virtualization in ...
- 在Android手机上学习socket程序
我们都知道Android手机是基于Linux系统的,在没有Linux环境,但是想学习socket编程的同学可以在Android手机中试试,利用ndk编译可执行文件在Android手机中运行.不同于动态 ...
- VS2015编译环境下CUDA安装配置
CUDA下载 CUDA是NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题,CUDA只支持NVIDIA自家的显卡,过旧的版本型号也不被支持. 下载地址:https://devel ...
- CMake生成OpenCV解决方案&&编译OpenCV源码
生成OpenCV工程需要用到CMake,所以第一步需要下载CMake软件,下载链接:CMake下载 目前最新的版本是3.7.1,这里选择下载Platform下的Windows win32-x86 ZI ...
- xshell登陆Win10 Linux子系统
原文:xshell登陆Win10 Linux子系统 版权声明:转载请注明出处 https://blog.csdn.net/anychenp/article/details/78922320 修改端口 ...
- listview分页载入问题
方案一: 底部有查看很多其它能够使用HeaderViewListAdapter 假设须要加入数据, 就向Adapter绑定的数据里面加入. 然后调用Adapter.notifyDataSetChang ...
- 《Linux Device Drivers》第十一章 核心数据类型——note
基本介绍 因为Linux多平台特性,不管是哪一个重要驱动力应该是便携 与内核代码相关的核心问题应该是访问的同时是数据项的已知长度.能力和利用不同的处理器 内核使用的数据类型主要分为三类 类似int这种 ...
- WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式
原文:WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 由于WPF中没有提供PropertyGrid控件,有些业务需要此类的控件.这篇文章介绍在WPF中实现PropertyGr ...
- C# System.Timers.Timer的使用
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享
原文:AY的Dapper研究学习-基本入门-C#开发-aaronyang技术分享 ====================www.ayjs.net 杨洋 wpfui.com ...