问题描述
我是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 (将#修改为@)