Laravel 队列使用

1.修改根目录

.env 文件的 **QUEUE_CONNECTION **字段配置为 database

Laravel可配置多种队列驱动,包括 "sync", "database", "beanstalkd", "sqs", "redis", "null"(具体参见app/config/queue.php)
其中sync为同步,database为使用数据库,后面三种为第三方队列服务,最后一种为不使用队列。

该位置具体是什么请查看app/queue

2.创建数据库队列表(database方式)

为了使用 database 队列驱动,你需要一张数据表来存储任务。

php artisan queue:table

生产一张队列表

php artisan migrate

mysql版本5.7.7以下可能会报如下错误

解决方案

打开app/Providers/AppServiceProvider文件,在boot方法中加入如下代码,删除数据库中已经生成的迁移数据表,再次运行就可以成功。

一定要删除已经生成的job数据表,否者汇报如下错误

\Schema::defaultStringLength(191); //add fixed sql

数据库最终效果

3.生成任务类

在你的应用程序中,队列的任务类都默认放在 app/Jobs 目录下。

如果这个目录不存在,那当你运行 make:job Artisan 命令时目录就会被自动创建。

你可以用以下的 Artisan 命令来生成一个新的队列任务:

php artisan make:job SetLog

4.在队列类里面的handle方法中写上业务逻辑(比如发送网络请求,发送邮件等等,这里简单写个日志代替)

protected $message;    /**     * Create a new job instance.     *     * @return void     */    public function __construct($message)    {        $this->message = $message;    }    /**     * Execute the job.     *     * @return void     */    public function handle()    {        \Log::info($this->message);    }

5.在控制器中加入一个测试方法,直接调用队列类的 dispatch方法,类似生产了一个任务

public function index(Request $request){SetLog::dispatch(date('Y-m-d H:i:s') . "进入了系统");}

这时,由于队列还没开启,数据库的队列表中会有一个任务,等待队列启动后执行

6.执行命令开启队列

php artisan queue:work

  这时,队列表中的任务执行后就会自动删除了,类似消费了任务

(0)

相关推荐

  • 快速安装laravel框架的IDE提示工具

    快速安装laravel框架的IDE提示工具 使用以下命令将此包与composer一起使用: composer require –dev barryvdh/laravel-ide-helper 更新co ...

  • 初次使用 Supervisor 管理 Laravel 队列进程

    #yuxiangShi/学习/php/laravel/使用Supervisor管理Laravel队列进程 下载Supervisor yum install -y supervisor1 Supervi ...

  • laravel 多模块模式下进行开发

    用 composer 命令下载并安装扩展包包 composer require nwidart/laravel-modules 生成配置文件 php artisan vendor:publish –p ...

  • 安装laravel权限包

    安装laravel权限包 composer require spatie/laravel-permission 你可以使用以下命令发布 migration php artisan vendor:pub ...

  • C语言实现环形队列的原理和方法

    什么是环形队列? 环形缓冲区是一个非常典型的数据结构,这种数据结构符合生产者,消费者模型,可以理解它是一个水坑,生产者不断的往里面灌水,消费者就不断的从里面取出水. 那就可能会有人问,既然需要灌水,又 ...

  • 详解队列队形及口令

    队列队形练习的意义 队列是在一定队形下的协调而统一的行动.队形是为协同动作而采取的队伍排列形式.前者以人民解放军的"队列条令,为基础,并结合体育课的需要适当加以补充:后者是对体育课上经常采用 ...

  • 清朝老照片:巡抚大人出巡队列散乱,农民家庭房屋简陋破旧

    时间淘洗岁月,人们能够记住的往事百不及一.对历史研究者和爱好者而言,回头看.还原先辈的生活仍有意义.小编翻箱倒柜,找到一组珍贵的清朝末期老照片,拼凑出100多年前社会状况的片段,供感兴趣的朋友感怀过去 ...

  • laravel框架简介

    一.简单介绍 1.laravel是基于mvc模式的php框架,m--模型层,v--视图层,c--控制器层:以下为laravel框架的目录文件,框出来的文件目录将在后续中用到: 2.什么是MVC的开发思 ...

  • 使用Composer安装laravel框架 详细步骤和方法

    使用Composer安装laravel框架 详细步骤和方法

  • laravel 学习笔记 —— 神奇的服务容器

    本文转载至:https://www.insp.top/learn-laravel-container laravel 学习笔记 -- 神奇的服务容器 竟然有人认为我是抄 Laravel 学院的,心塞. ...

  • 消息队列在RTOS的应用

    传说互联网应用有两大利器,一个是缓存,另一个就是消息队列. 一直相对消息队列做一下梳理,希望早日另有成文. 一叶知秋,实际上消息队列在嵌入式系统中同样有着广泛的应用. 近来致力于IoT和智能硬件,现学 ...

  • 6种延时队列的实现方案

    [编者的话]个人比较喜欢一些实践类的东西,既学习到知识又能让技术落地,能搞出个demo最好,本来不知道该分享什么主题,好在最近项目紧急招人中,而我有幸做了回面试官,就给大家整理分享一道面试题:&quo ...