php消息队列发送邮件,Laravel消息队列异步执行-发送邮件

0x01 配置

1、修改.env,我这里是采用的数据库,一般是用的异步服务器或者redis。我这里只是用作测试QUEUE_DRIVER=database

2、添加数据库,执行php artisan queue:table

php artisan queue:failed-table

php artisan migrate

3、创建队列任务,我这里使用的是发送邮件的例子php artisan make:job SendReminderEmail

0x02 控制器use Mail;

use App\Jobs\SendReminderEmail;

public function email()

{

$datas = \DB::table('data_email')->get();

foreach($datas as $data){

dispatch(new SendReminderEmail($data->name,$data->email));

}

return redirect('/users');

}

0x03 队列文件

编辑队列文件SendReminderEmail.php<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;

use Illuminate\Queue\SerializesModels;

use Illuminate\Queue\InteractsWithQueue;

use Illuminate\Contracts\Queue\ShouldQueue;

use Illuminate\Foundation\Bus\Dispatchable;

use Mail;

class SendReminderEmail implements ShouldQueue

{

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

protected $name;

protected $email;

/**

* Create a new job instance.

*

* @return void

*/

public function __construct($name, $email)

{

$this->name = $name;

$this->email = $email;

}

/**

* Execute the job.

*

* @return void

*/

public function handle()

{

// 如果参试大于三次

if ($this->attempts() > 3) {

\Log::info($this->name.'邮件参试失败过多');

}else{

// 每次进来休息3秒钟

sleep(3);

$flag = Mail::send('emails.test',['name'=>$this->name],function($message){

$message ->to($this->email)->subject('邮件测试');

});

echo $this->name;

if($flag){

\Log::info($this->name.'邮件发送成功');

}else{

\Log::info($this->name.'邮件发送失败');

}

}

}

public function failed()

{

\Log::error($this->name.'队列任务执行失败'."\n".date('Y-m-d H:i:s'));

}

}

0x04 开始并查看记录

在网站根目录执行,开始监听:php artisan queue:listen

查看storage/logs/laravel.log[2017-05-14 02:06:25] local.INFO: 亲6邮件发送成功

[2017-05-14 02:06:30] local.INFO: 亲7邮件发送成功

[2017-05-14 02:06:35] local.INFO: 亲1邮件发送成功

[2017-05-14 02:06:40] local.INFO: 亲2邮件发送成功

[2017-05-14 02:06:45] local.INFO: 亲3邮件发送成功

[2017-05-14 02:06:50] local.INFO: 亲4邮件发送成功

[2017-05-14 02:06:55] local.INFO: 亲5邮件发送成功

测试成功。。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值