Laravel 7队列数据库作业不会异步运行

问题描述

我是Laravel的新手,而队列和工作更多。 我创建了一个Job和所需的数据库表,例如Jobs和FailedJobs。 在我的.env文件中输入:

QUEUE_CONNECTION=database

这是Job类(SendEmailJob)的内容

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Mail\InfoletterMail;
use Illuminate\Support\Facades\Redis;

class SendEmailJob implements ShouldQueue
{
    use Dispatchable,InteractsWithQueue,Queueable,SerializesModels;
    protected $details;
    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct($details)
    {
        $this->details=$details;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        foreach ($this->details['users'] as $user){
            $email = new InfoletterMail($this->details);
            \Mail::to($user->email)->send($email);
            sleep(2);  
        }         
    }
}

这是我的控制器中将作业排队的函数:

 /**
     * Send the specified infoletter by email to all users
     * @param int id
     * 
     */
    public function send($id){
         $infoletter=Infoletter::find($id);
         $users=User::all();
         $details=[
            'title'=>$infoletter->title,'body' =>$infoletter->body,'users'=>$users,];
        dispatch(new SendEmailJob($details));
        return 'job queued';
    }  

我注意到的是,只要作业的任务未完成,对dispatch()的调用不会返回。 另外,我在数据库表中看不到该作业。 正确以每2秒发送一次的速度发送邮件 我的问题是如何让事物异步运行?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)