Help us understand the problem. What is going on with this article?

【ColdFusion】時間のかかるダウンロード処理をタイムアウトさせる

More than 1 year has passed since last update.

ファイルを生成してダウンロードさせる処理でタイムアウト時間を設けたい

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外からはアクセスできませんので注意してください。

namitan
ColdFusionでごはん食べてます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away