首页 > 解决方案 > 通过 Web 客户端触发后台任务而不丢失会话

问题描述

我有一个 webapp,它应该运行需要时间才能完成的资源密集型任务(功能)。我通过调用 url 来触发这个任务;

http://app.domain.com/process_file/@fileid

但是,正如预期的那样,Web 客户端等待任务(函数)完成。这很可能导致超时。

请建议我可以触发任务并让用户继续导航 web 应用程序的方法。

到目前为止,我已经尝试过以下方法;

1. JQuery/ajax
2. Redirecting to a _blank page 

注意:我无法访问 crontab 或调度程序。我正在使用 PHP、JavaScript 和无脂肪框架

标签: javascriptphpfat-free-framework

解决方案


我相信您正在寻找中止功能:

function (Base $f3) {
  // process request and send response to client (could be a redirect status)
  $f3->abort(); // disconnect the client
  // perform consuming task here
}

这基本上是 Pavel Třupek 建议的解决方案,为方便起见包装在一个方法中。


推荐阅读