拉威尔queue:listen queue:工作不工作

kq0g1dla  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(374)

我试图在后台发送电子邮件,以减少服务器的响应时间。
我已经使用创建了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');
                    });
plupiseo

plupiseo1#

我明白了,问题出在能言善辩的关系上。当电子邮件被查询时,需要序列化有说服力的模型对象。因此,一旦模型对象被序列化,就不能访问关系。
因此,我尝试加载模型关系,并使用 toArray() 方法,然后开始处理作业。
那是在打电话之前

\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');
                });

我急切地把所有的关系都加进去了 $friend_request 对象。
为了example:-

$friend_request = FriendRequest::with('notifiable')->find($request_id);

相关问题