laravel 队列使用(发邮件、短信等)

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 = 'xxxx@qq.com';
        $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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值