laravel job 队列

喜欢而已 提交于 2020-04-19 23:19:20

1.数据库建表

 

php artisan queue:table<span>				</span>//队列任务表
php artisan queue:failed-table<span>			</span>//任务执行失败表 php artisan migrate



2.创建job类






<?php

namespace App\Jobs;

use App\Services\TestService;
use Illuminate\Support\Facades\Log;

class CommentInfoJob extends Job
{

    public $commentService;
    public $user_id;
    public $comment_id;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($user_id,$comment_id)
    {
        $this->user_id = $user_id;
        $this->comment_id = $comment_id;
    }

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

      
        (new TestService())->testsssss($this->user_id,$this->comment_id);
    }
}

  

3.在job类中,实现逻辑

job主要包括三个函数

 

  • 构造函数 可选,用来传参
  • handle() 必选,实现队列任务逻辑
  • failed() 可选,当任务失败时执行

4.分发队列任务

 

dispatch(new CommentInfoJob($params['user_id'], $params['comment_id']));

5.开启队列进程,执行队列任务
php artisan queue:work





这种方式不能关闭teminal,比较不方便。所以一般使用Supervisor。

 


以上就可以完成一个简单的队列任务。

在laravel中有一个很关键的点:配置为database驱动。

 

在/config/queue.php中,需要将connections设置为database。而这一配置是从.env文件中获取的

 

将queue_driver配置为database。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!