在laravel中运行一个队列作业来发送电子邮件时,会生成两个进程,如何解决这个问题并只保留一个?

dly7yett  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(92)

在laravel中发送带有队列作业的电子邮件时,它会创建两个进程,为什么?是否有办法修复并只保留一个?是否有任何函数可以做到这一点?对于每个调度,一个进程。

控制器
public function sendMail()
{
    $email = "gustavo.gomes@teste.com.br";
    SendMail::dispatch($email);

    return view('site.email-enviado');    
}
工作
public function handle()
{
    Mail::to('teste@test.com')->queue(new MensagemTesteMail($this->email)); 
}
电子邮件
public function build()
{
    return $this->subject('gustavocamalionti@gmail.com')
        ->from(env("MAIL_FROM_ADDRESS", null), 'Teste email')
        ->view('emails.cadastro-sucesso');
}

php artisan queue:work

lf5gs5x2

lf5gs5x21#

您没有执行2个进程(作业工人)...您只有一个...
1.第一个命令实际上表示它正在处理您发送到队列的作业(SendMail
1.第二行表示SendMail作业已处理
1.第三个是字面上说,它正在处理一个作业(MensagemTesteMail)(我建议很多只用英语编码)
1.第四个示例说明MensagemTesteMail作业已处理
您有2个作业,因为第一个作业(SendMail)正在执行Mail::to('teste@test.com')->queue(new MensagemTesteMail($this->email));,这实际上创建了邮件(MensagemTesteMail)。它是一个作业,因为您有这样的作业...您实际上有->queue(new MensagemTesteMail($this->email)),所以这是第二个作业...

相关问题