Laravel队列问题

时间:2019-05-01 05:49:43

标签: php laravel-5

我在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();
       }

0 个答案:

没有答案