Laravel, dispatchAfterResponse 不释放前端请求
Laravel, dispatchAfterResponse does not release frontend request
我正在尝试在 laravel 中实现异步作业,因此我可以发送电子邮件(使用第 3 方 API),但让用户进入前端,这样请求就不会等待电子邮件将被寄出。
我正在使用 Laravel 6.18.
所以我用 php artisan make:job EmailJob
创建了通用作业
我设置了 60 秒的休眠时间作为发送长邮件的测试。
然后在我的控制器中
EmailJob::dispatchAfterResponse();
return response()->json($obj,200);
在 chrome 控制台,我可以看到有 200 个响应,但是请求仍然没有解决,也没有返回数据,所以我的 ajax/axios 请求仍在等待完整响应,最终它超时(60 秒太长),并在前端产生错误。
所以问题是,发送完整响应后如何执行作业?
您必须更改队列驱动程序和 运行 queue:worker
以下 2 项资源会对您有所帮助
我正在尝试在 laravel 中实现异步作业,因此我可以发送电子邮件(使用第 3 方 API),但让用户进入前端,这样请求就不会等待电子邮件将被寄出。 我正在使用 Laravel 6.18.
所以我用 php artisan make:job EmailJob
我设置了 60 秒的休眠时间作为发送长邮件的测试。
然后在我的控制器中
EmailJob::dispatchAfterResponse();
return response()->json($obj,200);
在 chrome 控制台,我可以看到有 200 个响应,但是请求仍然没有解决,也没有返回数据,所以我的 ajax/axios 请求仍在等待完整响应,最终它超时(60 秒太长),并在前端产生错误。
所以问题是,发送完整响应后如何执行作业?
您必须更改队列驱动程序和 运行 queue:worker
以下 2 项资源会对您有所帮助