如何使用Laravel发出异步请求?

时间:2017-08-22 08:29:48

标签: php mysql laravel

在我的Laravel 5.4网络应用程序中,用户可以请求生成报告,由于大量数据而需要几分钟。由于这些原因,他不能再使用应用程序,直到生成报告为止。为了解决这个问题,我已经阅读了queues in laravel并将我的报告生成代码分离到了作业类,但我的应用程序仍然存在,直到生成报告。 我该如何解决?

绝对清楚我会总结我的问题:

  1. 用户请求生成报告(我的应用程序此时绝对保留)
  2. 我的应用程序在路由中接收POST请求并从控制器类调用函数。
  3. Controller函数调度一个作业,该作业应生成报告并将其放入客户端Web文件夹中。

2 个答案:

答案 0 :(得分:3)

听起来你已经通过引入队列解决了这个问题。将作业放入队列,但不要跟踪其进度 - 允许您的代码继续并返回给用户。它应该可以“发射并忘记”,然后要求用户在几分钟内检查报告是否准备就绪,或者提供在完成时通过电子邮件发送给他们的能力。

答案 1 :(得分:1)

默认情况下,Laravel使用sync队列驱动程序。此驱动程序在与创建它们的请求相同的请求中执行排队的作业。因此,这不会产生任何差异。

您应该查看other drivers并使用Laravel queue worker后台流程执行工作,以确保他们不会完成网络请求。

相关问题