强行停止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...
有谁知道如何在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...