0

我有一个 Coldfusion 应用程序和页面,可以在其中生成和下载文件。在某些情况下,该过程需要花费大量时间。我想实现它,使整个过程看起来像这样:

  • 开始生成和下载文件的过程
  • 如果文件是在一定时间(例如 10 秒)内生成的,则立即将其提供给用户
  • 如果没有,则在允许的生成时间到期后,显示一条消息,该文件将发送到用户电子邮件。

我认为CF线程可以帮助我,但我之前没有使用过。

thread action="run" name="generateFile" {
    var createFileResult = myService.createFile();
}

thread action="join" name="generateFile" timeout="10000"; // 10 sec.

if (generateFile.status != "COMPLETED") {
    thread action="terminate" name="generateFile";
    var createFileResult = new CreateFileResult(message="We will produce the file and send you a link to download.");
}

目前,如果文件尚未生成,我会显示一条消息,但同时,我失去了在第一次请求时生成文件的能力。我对以下内容感兴趣:如何在不杀死生成文件的线程的情况下(如果可能),在后台为用户完成文件生成并立即将其发送到用户电子邮件?

我想以这种方式实现它,因为我想合理地使用服务器资源,并且如果文件不是在第一个用户请求时生成的,并且不会在同一个文件时再次加载服务器,则不会忽略所做工作的结果生成用于发送到电子邮件。

4

0 回答 0