php - Laravel,dispatchAfterResponse 不释放前端请求

标签 php ajax laravel jobs

我正在尝试在 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 个资源将帮助您

  1. https://laravel-news.com/laravel-jobs-and-queues-101
  2. https://laravel.com/docs/6.x/queues#connections-vs-queues

关于php - Laravel,dispatchAfterResponse 不释放前端请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69920072/

相关文章:

php - Woocommerce 如何按产品 SKU 显示产品

php - 将 td 悬停在 while 循环中时如何获取特定 ID

ajax - 有人可以在 register.php 上发个帖子并注册 10 亿个帐户吗?

php - Laravel - 一个主用户帐户下的多个用户登录

laravel - 使用 laravel Blade 嵌套 View

laravel - Eloquent : API Resources vs Fractal

php - 如何处理 Laravel 护照中的 "unsupported_grant_type"

php - 如何使用PHP显示Json数据?

php - 集成/迁移两个 CodeIgniter 应用程序。

javascript - 如何使用 Ajax 加载文件数组?