Laravel Jobs

laravel 队列支持:

"sync", "database", "beanstalkd", "sqs", "redis", "null"

等。。。

先用database测试

修改.env

QUEUE_CONNECTION=database

配置数据库模式的环境,原理保存在数据库,执行完成之后就删除了
在这里插入图片描述

php artisan queue:table
php artisan migrate

生成上图展示的数据库jobs

创建一个job

php artisan make:job test
<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class test implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public $data;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($data=[])
    {
        $this->data = $data;
        $this->delay(6);//6秒后执行
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        var_dump($this->data);
    }
}

两种方式:
添加一个job到队列中

  dispatch(new \App\Jobs\test('我是队列的参数'));
  test::dispatch('我是队列的参数');

上面就能跑通了,但是有时候会处理异常的情况

php artisan queue:failed-table
php artisan migrate

启动的时候有尝试的值,为如果失败了,会再次执行

 php artisan queue:work --sleep=3 --tries=3 

laravel框架中queue:listen 和 queue:work –daemon 的区别

三秒后再次尝试

如果不加tries 则会一直不断的循环

发现了有错误,修改了bug ,想让这个队列再跑一次

这个id 为失败的id

php artisan queue:retry 1

如果想所有的错误都跑一遍则用all

php artisan queue:retry all
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
37
粉丝
16
喜欢
132
收藏
113
排名:327
访问:2.9 万
私信
所有博文
社区赞助商