У меня есть приложение Coldfusion и страница, на которой я создаю и загружаю файл. Бывают случаи, когда этот процесс занимает много времени. Я хотел бы реализовать это так, чтобы весь процесс выглядел так:
- начать процесс создания и загрузки файла
- , если файл создается в течение определенного времени (например, 10 se c.), Затем немедленно предоставить его пользователю
- если нет, то по истечении допустимого времени для генерации отобразить сообщение о том, что файл будет отправлен на электронную почту пользователя.
Я думаю, что потоки 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.");
}
В настоящее время я показываю сообщение, если файл не сгенерирован, но в при этом я теряю возможность сгенерировать файл по первому запросу. Меня интересует следующее: как, не убивая поток, в котором создается файл (если это возможно), завершить генерацию файла в фоновом режиме для пользователя и сразу отправить его на электронную почту пользователя?
Я хочу реализовать это таким образом, потому что хочу рационально использовать ресурсы сервера и не игнорировать результат проделанной работы, если файл не был сгенерирован по первому запросу пользователя, и не загружать сервер снова, когда тот же файл создается для отправки на электронную почту.