我正在尝试在 Laravel 中实现异步作业,因此我可以发送电子邮件(使用第 3 方 API),但让用户进入前端,这样请求就不会等待电子邮件发送。 我正在使用 Laravel 6.18。
所以我用 php artisan make:job EmailJob
创建了通用作业
我设置了 60 秒的休眠时间作为发送长邮件的测试。
然后在我的 Controller 中
EmailJob::dispatchAfterResponse();
return response()->json($obj,200);
在 chrome console 中,我可以看到有 200 个响应,但是请求仍然没有解决,也没有返回数据,所以我的 ajax/axios 请求仍在等待完全响应,最终超时(60 秒太长),并在前端产生错误。
那么问题来了,发送完整响应后如何执行作业?
最佳答案
您必须更改队列驱动程序并运行 queue:worker
以下 2 个资源将帮助您
关于php - Laravel,dispatchAfterResponse 不释放前端请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69920072/