laravel学习笔记(四):队列任务的简单使用

8 篇文章 0 订阅

1.配置.env决定使用哪种连接

QUEUE_CONNECTION=database

此处的database会对应到config/queue.php的connections数组下面的键值
driver是队列使用的引擎
queue是队列名称
在这里插入图片描述
2.如果引擎是database,运行命令创建数据表
php artisan queue:table
php artisan migrate

3.创建任务类 SendMail
php artisan make:job SendMail
接着便能看到 app/Jobs/SendMail.php
我们只需要在handle方法做处理。比如我只是打印一下日志

<?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 SendMail implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public $msg = '';

    /**
     * Create a new job instance.
     *
     * SendMail constructor.
     * @param $msg
     */
    public function __construct($msg)
    {
        $this->msg = $msg;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Log::info('Jobs SendMail'.$this->msg);
    }
}

4.在控制器使用任务
php artisan make:controller TestJobController
生成文件:app/Http/Controller/TestJobController.php

<?php

namespace App\Http\Controllers;

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

class TestJobController extends Controller
{
    public function index(Request $request, $msg)
    {
        SendMail::dispatch($msg);
    }
}

然后配置路由访问控制器
routes/web.php

Route::get('/job/{msg}','TestJobController@index');

5.最后,运行队列
php artisan queue:work
最后可以查看日志文件有没有打印

其他
(1)任务可以延迟执行、设置超时时间、运行期间运行抛出的异常次数、使用中间件等等。
(2)laravel有两个官方的拓展包可以直观地查看队列任务的执行情况TelescopeHorizon

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值