队列使用步骤
1.迁移队列需要的数据表
2.编写任务类
3.推送任务到队列
4.运行队列监听器
5.处理失败的任务
使用
1.配置文件 Config/queue.php
2.迁移队列需要的数据表
php artisan queue:table 实现迁移: php artisan migrate
3.编写任务类
php artisan make:job SendSms
<?php
namespace App\Jobs;
use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Storage;
use App\Models\Sms;
class SendSms extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;
public $sms = [];
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(array $sms)
{
//
$this->sms = $sms;
}
/**
* Execute the job.
*
* @param array $sms
*/
public function handle()
{
//发送
}
}
4.推送任务到队列
新建控制器
public function sendSms()
{
dispatch(new SendSms('xxxxx'));
}
演示执行,访问路由。。。
查看数据表jobs。。。。
5.执行队列,运行队里监听器
php artisan queue:listen
6.处理失败任务
建立迁移文件,生成失败时需要的表
php artisan queue:failed-table
php artisan migrate
访问路由,如果队列任务执行失败,failed-table表中出现失败的任务
查看哪些队列任务失败
php artisan queue:failed
手动执行失败的队列任务,将失败的任务放入队列中
php artisan queue:retry 1(1代表需要执行任务的id,如果是all 表示执行全部)
删除失败队列的任务 以及删除全部
php artisan queue:forget 1(1代表需要执行任务的id)
php artisan queue:flush