我试图在后台发送电子邮件,以减少服务器的响应时间。
我已经使用创建了jobs表和failed\ jobs表 php artisan queue:table
以及 php artisan queue:failed-table
命令。而且还设置了 QUEUE_DRIVER=database
在.env文件中。
当我执行以下代码时,它会在jobs表中创建一个job。
\Mail::later(5, 'email.new-friend-request', ['data'=>$friend_request], function($message) use (&$friend_request){
$message->to($friend_request->notifiable->email, $friend_request->notifiable->name)->from('info@example.com','ABC')->subject('New Friend Request');
});
但当我执行 php artisan queue:listen
或者 php artisan queue:work
命令。它既不处理保存在jobs表中的作业,也不在控制台上提供任何输出。
但是,当我检查jobs表时,job的attempts字段会不断增加。但这项工作并没有得到处理。
另外,当我直接用下面的代码发送邮件时,即不将其添加到队列中。邮件顺利地寄出去了。
\Mail::send('email.new-friend-request', ['data'=>$friend_request], function($message) use (&$friend_request){
$message->to($friend_request->notifiable->email, $friend_request->notifiable->name)->from('info@example.com','ABC')->subject('New Friend Request');
});
更新
我试着发送电子邮件没有任何数据,它也没有任何问题。ie公司
\Mail::later(5, 'email.new-friend-request', [], function($message) use (&$friend_request){
$message->to($friend_request->notifiable->email, $friend_request->notifiable->name)->from('info@example.com','ABC')->subject('New Friend Request');
});
1条答案
按热度按时间plupiseo1#
我明白了,问题出在能言善辩的关系上。当电子邮件被查询时,需要序列化有说服力的模型对象。因此,一旦模型对象被序列化,就不能访问关系。
因此,我尝试加载模型关系,并使用
toArray()
方法,然后开始处理作业。那是在打电话之前
我急切地把所有的关系都加进去了
$friend_request
对象。为了example:-