强行停止cfc组件中函数的执行

Forcibly stop the execution of the function in the cfc component

有谁知道如何在cfc组件中强制停止运行超过一定时间的函数执行?它可能是一段代码,而不是一个完整的函数,即如果它在 5 秒内完成,我会采取一些行动,否则会采取其他行动。

停止任意代码的唯一方法是 运行 将它放在一个单独的线程中,然后在设定的时间后终止。这可以通过调用带有请求超时设置的单独页面或使用 cfthread 来完成。

例如线程... (注意....正如 Alex 指出的那样,您可以在 cfthread 上使用超时)

<cfthread action="run" name="runForLimitedTime">
    ... code, call to function, etc ...
</cfthread>

<cfset sleep(5000) />

<cfif cfthread.runForLimitedTime.status eq "COMPLETED">
    <cfthread action="join" />
<cfelse>
    <cfthread action="terminate" name="runForLimitedTime" />
</cfif>

或者使用单独的页面...

<!--- calling page --->

<cfset error = false />
<cftry>
    <cfhttp url="pageSetupForSpecificCall.cfm?timeout=5" throwonerror="true" />
    <cfcatch>
        <cfset error = true />
    </cfcatch>
</cftry>

<cfif error>
    something
<cfelse>
    something else
</cfif>


<!--- pageSetupForSpecificCall.cfm --->

<cfsetting requesttimeout="#url.timeout#" />

...do things...