生成任务类
默认情况下,应用程序的所有可排队任务都存储在 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