我在laravel中设置了所有与队列作业有关的东西,并且工作正常。但是有一段时间,当我尝试立即多次发送电子邮件时,有时数据库中的作业表为空,这意味着主管处理了作业,但我没有收到电子邮件。我不知道发生了什么。
我试图对此进行研究,但是没有人对此提出建议。
.Env
Queue_Driver=database
Queue.php
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 0,
],
控制器
<?php
namespace App\Jobs;
date_default_timezone_set('utc');
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Mail;
use Log;
class SendEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $emailArray;
public function __construct($emailArray)
{
$this->emailArray = $emailArray;
}
public function handle()
{
try {
$emailArray = $this->emailArray;
switch ($emailArray['template_name']) {
case 'email1':
$email = $emailArray['email'];
Mail::send('emails.' . $emailArray['template_name'], $emailArray, function ($message) use ($email) {
$message->from(env('FromMail', 'myemail@gmail.com'), 'My Email');
$message->to($email)->subject('My Email| Forgot Password');
});
break;
}
return;
} catch (\Exception $e){Log::info($e->getMessage());}
}
}
推送工作
try {
$userMailArray = [
'template_name' => 'email1',
'email' => $email,
'temp_password' => $temporaryPwd,
];
dispatch(new SendEmail($userMailArray));
} catch (\Exception $e) {
Session::flash('invalidMail', 'Something went wrong. Please try again.');
return back();
}