1、配置
队列配置文件存放在config/queue.php
。在该文件中你将会找到框架自带的每一个队列驱动的连接配置,包括数据库、Beanstalkd、 IronMQ、 Amazon SQS、 Redis以及同步(本地使用)驱动。其中还包含了一个null队列驱动以拒绝队列任务。
咱们以database为例:env文件配置 QUEUE_DRIVER=database
2、创建数据库(jobs、failed_jobs),如果想自定义表名,生成后改一下表名,然后修改配置文件queue.php 中的jobs及failed_jobs为自己的表名
1 php artisan queue:table 2 php artisan queue:failed-table 3 php artisan migrate
3、创建任务类
php artisan make:job SendReminderEmail
该命令将会在app/Jobs
目录下生成一个新的类,并且该类实现了Illuminate\Contracts\Queue\ShouldQueue
接口,告诉Laravel该任务应该被推送到队列而不是同步运行。
例子中用的邮件发送,测试之前请先配置邮件发送
namespace App\Jobs; use App\Jobs\Job; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Support\Facades\Mail; class SendReminderEmail extends Job implements ShouldQueue { use InteractsWithQueue, SerializesModels; /** * Create a new job instance. * * @return void */ public function __construct() { // } /** * Execute the job. * * @return void */ public function handle() { // $message = "testtesedtsetstwesewrwerewrw"; $to = ‘[email protected]‘; $subject = ‘邮件名称‘; Mail::send( ‘email.test‘, [‘data‘ => $message], function ($m) use($to, $subject) { $m->to($to)->subject($subject); } ); } }
3、控制器推送到任务(延迟执行、任务分类等,可自行查找手册)
1 $job = (new SendReminderEmail())->delay(5); 2 $this->dispatch($job);
4、测试期可以使用php artisan queue:listen进行队列的监听
原文地址:https://www.cnblogs.com/winstonsias/p/10196514.html
时间: 2024-10-08 05:52:33