首页 > 解决方案 > 如何在laravel中停止排队的工作

问题描述

我正在 laravel 中处理可排队的工作,它的工作很好,并使用工作完美地发送电子邮件,但我给了五个记录来发送电子邮件,所以,电子邮件发送到这五个电子邮件 ID,并且在没有停止但越来越多的时间发送电子邮件之后

 <?php

 namespace App\Jobs\Admin;

 use Illuminate\Bus\Queueable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Queue\InteractsWithQueue;
 use Illuminate\Contracts\Queue\ShouldQueue;
 use Illuminate\Foundation\Bus\Dispatchable;

 use Illuminate\Http\Request;
 use Mail;

 class TempleteEmailJob implements ShouldQueue
 {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

protected $emailinfo_data;
/**
 * Create a new job instance.
 *
 * @return void
 */
public function __construct($emailinfo_data)
{
    $this->emailinfo_data=$emailinfo_data;
}

/**
 * Execute the job.
 *
 * @return void
 */
public function handle(Request $request)
{
    $mail_data = $this->emailinfo_data;

    foreach ($mail_data as $key => $value)
    {
        $emails = [$value['email']];

        Mail::send('admin.templete.email', ['title' => $value], function($message) use ($emails)
        {    
            $message->to($emails)->subject('2');    
        });
    }
    return;
    }
}

mail_data 有一些发送电子邮件的数据,例如用户电子邮件 ID。

在此处输入图像描述

就像那个循环不会停止并继续发送邮件到给定的电子邮件ID

谢谢你。

标签: phplaravel

解决方案


实际上,如果您的脚本在本地有错误,则作业将一遍又一遍地重复,因此您必须停止队列然后输入命令:

php artisan cache:clear

然后检查日志文件并修复错误并再次运行队列。


推荐阅读