ファイルを生成してダウンロードさせる処理でタイムアウト時間を設けたい
Excelファイルを生成する処理なんかは何分も返ってこないことがありますね。
そこで1分経ったら諦めてもらう処理です。
<!--- ダウンロードファイル作成 --->
<CFTHREAD action="run" name="making_file">
<!--- makingFile()は成功時ファイル名を返します --->
<CFSET variables.sOutputFileNm = makingFile()>
</CFTHREAD>
<!--- 終わるまで最大1分待つ --->
<CFTHREAD action="join" name="making_file" timeout="60000" />
<CFIF isDefined("sOutputFileNm") && sOutputFileNm neq "">
<!--- ファイルが出来ていたらダウンロード --->
<CFSET downloadFile(sOutputFileNm)>
<CFELSE>
<CFIF findNoCase("RUNNING", CFTHREAD.making_file.status)>
<!--- 終わってなければ中断 --->
<CFTHREAD action="terminate" name="making_file" />
<CFSET errmes = "ダウンロード処理でタイムアウトしました。">
<CFELSE>
<!--- 終わってるのにファイル名が返ってないのは何かのエラー --->
<CFSET errmes = "ダウンロードに失敗しました。">
</CFIF>
</CFIF>
CFTHREAD
内の変数は、明示的にvariables
スコープを付けないとCFTHREAD
外からはアクセスできませんので注意してください。