Laravel 7队列数据库作业不异步运行
我不熟悉拉威尔,更不熟悉排队和工作。 我创建了一个作业和所需的数据库表,如Jobs和FailedJobs。 在我的.env中,我放了以下内容:Laravel 7队列数据库作业不异步运行,laravel,asynchronous,queue,jobs,Laravel,Asynchronous,Queue,Jobs,我不熟悉拉威尔,更不熟悉排队和工作。 我创建了一个作业和所需的数据库表,如Jobs和FailedJobs。 在我的.env中,我放了以下内容: QUEUE_CONNECTION=database 以下是作业类(SendEmailJob)的内容 <?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundat
QUEUE_CONNECTION=database
以下是作业类(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);
}
}
}
我注意到,只要作业的任务没有完成,对dispatch()的调用就不会返回。
此外,我无法在数据库表中看到作业。
邮件以每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';
}