Я установил все, что связано с заданиями в очереди, в 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();
}