5

私は毎日この問題に直面しています。cfhhtpコール/リクエストを通じて、夜間のスケジュールジョブでさまざまなアプリケーションから膨大なデータをキャッチするアプリケーションを使用しています。ここでの問題は、データをキャッチするために「スコープの広範なリスト」を呼び出すことであり、残念ながらスコープを制限することはできません:(タスクで設定されたタイムアウトは9000秒です(すでにかなり高いです)が、それでもタイムアウトと表示されますcfhttpタグで

「リクエストは許容時間制限タグを超えました: cfhttp」.

どのように機能するかはわかりませんがcfhttp、データを長時間にわたってさまざまなスコープからキャッチした場合、エラーをスローせず、最後のリクエストまで動作し続けるという解決策が必要です。

<cfset dynVarName = "funded" & bizforShort>
<cfif structKeyExists(variables,dynVarName)>
    <cfset howManyCustomScopes = listLen(structkeylist(variables[dynVarName],"|" ),"|" )>
    <cfmodule template="#Request.Library.CustomTags.VirtualPath#Scheduler_LogDetail.cfm"
                  Step="Funded Level Cache" Detail="Custom Scopes to be cached: #howManyCustomScopes#"
                  LogData=""></cfmodule>
    <cfloop collection="#variables[dynVarName]#" item="t">
        <cfset tempurl = variables[dynVarName][t]["url"]>
        <cfset tempurl = tempurl & "&retainCache=1">
        <cfoutput>
            <cfhttp url="#tempurl#" method="GET" resolveurl="false" timeout="9000">
            #tempurl#<br>
            <cfset scopesCachedCounter = scopesCachedCounter + 1>
            <cfmodule template="#Request.Library.CustomTags.VirtualPath#Scheduler_LogDetail.cfm" Step="Funded Scopes Cache" Detail="#scopesCachedCounter#.- #t#" LogData="#tempurl#"></cfmodule>
        </cfoutput>
    </cfloop>
</cfif>

注: ページには、スコープをキャッチする場所から 1 つの「インクルード」があります。

4

1 に答える 1

3

ページの上部に、次のcfsettingコードを追加して、十分に大きな値を に割り当てますrequestTimeOut。これにより、ページ全体のタイムアウトが確実に設定され、累積実行時間がこの値を超えない限り、任意のタグが必要なだけ時間をかけることができます。

<cfsetting requestTimeOut = "9000" />
于 2016-02-11T20:37:10.277 に答える