laravel 队列使用(发邮件短信等)
Posted winstonsias
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
目录下生成一个新的类,并且该类实现了IlluminateContractsQueueShouldQueue
接口,告诉Laravel该任务应该被推送到队列而不是同步运行。
例子中用的邮件发送,测试之前请先配置邮件发送
namespace AppJobs; use AppJobsJob; use IlluminateQueueSerializesModels; use IlluminateQueueInteractsWithQueue; use IlluminateContractsQueueShouldQueue; use IlluminateSupportFacadesMail; 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进行队列的监听
以上是关于laravel 队列使用(发邮件短信等)的主要内容,如果未能解决你的问题,请参考以下文章