Laravel 队列功能 简单应用

生成任务类 

默认情况下,应用程序的所有可排队任务都存储在 app/Jobs 目录下。如果 app/Jobs 目录不存在,则会在运行 make:job Artisan 命令时将创建它。你可以使用 Artisan CLI 生成一个新的队列任务:

php artisan make:job ProcessPodcast

 

<?php

namespace App\Jobs;

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

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

    protected $message;

    /**
     * Create a new job instance.
     * 创建一个新的job实例
     * @return void
     */
    public function __construct(string $message)
    {
        $this->message = $message;
    }

    /**
     * Execute the job.
     * 执行job
     * @return void
     */
    public function handle()
    {
        Log::info($this->message);
    }
}

 

运行队列处理器 (worker)

Laravel 包含一个队列工作器,它将在新任务被推入队列时处理它们。您可以使用 queue:work Artisan 命令运行 worker。请注意,一旦 queue:work 命令已经启动,它将一直运行,直到它被手动停止或你关闭你的终端:

php artisan queue:work

 

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

use App\Jobs\ProcessPodcast;

public function test() {
    ProcessPodcast::dispatch('TestController test message');    
}

 

队列执行结果:新增了一条test message log

 

 

 

 

posted @ 2020-09-08 17:04  七彩鱼丸  阅读(256)  评论(0编辑  收藏  举报