Laravel 队列功能 简单应用

生成任务类 

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

php artisan make:job ProcessPodcast
<?php

namespace AppJobs;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateFoundationBusDispatchable;
use IlluminateQueueInteractsWithQueue;
use IlluminateQueueSerializesModels;
use IlluminateSupportFacadesLog;

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 AppJobsProcessPodcast;

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

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

 

原文地址:https://www.cnblogs.com/starfish29/p/13633687.html