Laravel queue(队列)

2018年8月12日22:00:49

配置文件config/queue.php

设置database驱动

QUEUE_DRIVER=database

生成迁移文件

php artisan queue:table

创建任务类SendMail

php artisan make:job SendMail

创建成功后在 App/Jobs/下面

<?php

namespace App\Jobs;

use Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class SendMail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $content;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($content)
    {
        $this->content = $content;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::raw($this->content, function($message){
            $message->from('发件地址','Angerst');
            $message->subject('Larave队列任务 测试');
            $message->to('收件人');
        })
    }
}

QueueController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Jobs\SendMail;

class QueueController extends Controller
{
    public function queue($content)
    {
    	dispatch(new SendMail($content));
    	return '已添加到队列中';
    }
}

运行队列监听器

php artisan queue:listen

处理失败任务

建立failed table

php artisan queue:failed-table

查询失败的队列

php artisan queue:failed

重新执行失败的队列(id)

php artisan queue:retry 1

重新执行所有失败的队列

php artisan queue:retry all

删除失败队列

php artisan queue:forget id //删除单条

php artisan queue:flush //删除所有

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容