
正文
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






