Solo  当前访客:0 开始使用

布丁与画家的博客

努力改变一小部分人解决问题的方式

【laravel】队列的使用,开启延迟任务。

2020-05-10 19:09:49 iwh718
0  评论    0  浏览

❤️ ,由于项目需要有一个延迟的任务要执行,于是就上了队列,比如指定时间段内邀请指定用户后,自动触发一个任务。

首先开启laravel的队列服务

config下的queue 修改

'default' => env('QUEUE_CONNECTION', 'database'),

因为我是用的数据库作为driver。

配置好默认的driver后,创建一个job

php artisan make:job InviteJob

这个时候会生成一个类

<?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;
use Illuminate\Support\Facades\Log;

/**
 * Class InviteChecker
 * @package App\Jobs
 * 检查用户是否24小时内完成任务
 */
class InviteChecker implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    protected $user;
    public $tries = 2;
    public $timeout = 120;


    /**
     * Create a new job instance.
     *
     * @param User $user
     */
    public function __construct(User $user)
    {

        $this->user = $user;

    }

    /**
     * Execute the job.
     *
     * @return void
     * @throws \Exception
     */
    public function handle()
    {

        //检查用户24小时内邀请人数
//xxx
  
    }
}

这个类继承了ShouldQueue

我们要实现一个抽象方法:handle 这里执行任务就行了。

如何提交队列呢使用全局助手dispatch就好了

dispatch((new InviteChecker($user))->onConnection('database')->delay(now()->addSecond(10)));

提交了这个邀请任务检查的实例,并且指定了driver和延迟执行。可以看到参数是一个Eq模型。在任务构造器里可以获取这个参数。

启动任务

php artisan queue:work


标题:【laravel】队列的使用,开启延迟任务。
作者:iwh718
地址:看看我的CSDN

web站点:骇客猫科技资讯



今日诗词
QQ交流群:914105779

标签

友链

存档

TOP