CF函数出现超时错误,是否有更高效的改写方式?
CF函数执行超时的高效改写方案
我有一个CF函数执行时出现超时错误,该函数运行在包含其他业务逻辑的页面中,请问有没有更高效的改写方式?
<cffunction name="GetTheSerialNumber" access="remote" returnformat="plain" returntype="string" output="no"> <cfargument name="term" required="yes" /> <cfsetting requesttimeout="20"/> <cfif NOT IsDefined("session.LoggedIn")> <cfabort /> </cfif> <cfquery name="GetSerialNumber" datasource="#application.datasource#"> SELECT [serialNum] ,MissionAsset.MissionAssetID ,MissionAssetDescription ,ESN.EfracusSerialNumberID FROM MissionAsset LEFT JOIN EfracusSerialNumber ESN ON MissionAsset.MissionAssetID = ESN.MissionAssetID WHERE MissionAsset.isActive = <cfqueryparam value="1" cfsqltype="cf_sql_bit"> AND serialNum LIKE <cfqueryparam value="%#arguments.term#%" cfsqltype="cf_sql_varchar"> AND MissionAssetStatusID IN (2,3,4,5,6) ORDER BY serialNum </cfquery> <cfset stcReturn = '['> <cfloop query="GetSerialNumber"> <cfset stcReturn &= '{"label":"#GetSerialNumber.serialNum#", "value":"#GetSerialNumber.serialNum#", "missionAssetID": "#GetSerialNumber.MissionAssetID#", "missionAssetDescription": "#GetSerialNumber.MissionAssetDescription#", "ID" : "#GetSerialNumber.EfracusSerialNumberID#"}'> <cfif GetSerialNumber.CurrentRow NEQ GetSerialNumber.RecordCount> <cfset stcReturn &= ","> <cfelse> <cfset stcReturn &= "]"> </cfif> </cfloop> <cfreturn stcReturn> </cffunction>
更新说明:我采纳了部分建议,在不修改前端代码的前提下优化了该函数,以下是优化后的版本,感谢各位!
<cffunction name="GetTheSerialNumber" access="remote" returnformat="plain" returntype="string" output="no"> <cfargument name="term" required="yes"> <cfsetting requesttimeout="20"/> <cfif NOT IsDefined("session.LoggedIn")> <cfabort /> </cfif> <cfquery name="GetSerialNumber" datasource="#application.datasource#"> SELECT [serialNum] as LabelValue, MissionAsset.MissionAssetID as MAID, MissionAssetDescription as MAD, ESN.EfracusSerialNumberID as ESNID FROM MissionAsset LEFT JOIN EfracusSerialNumber ESN ON MissionAsset.MissionAssetID = ESN.MissionAssetID WHERE MissionAsset.isActive = <cfqueryparam cfsqltype="cf_sql_bit" value="1"> AND serialNum LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#arguments.term#%"> AND MissionAssetStatusID IN (2,3,4,5,6) ORDER BY LabelValue </cfquery> <cfset stcReturn = '['> <cfloop query="GetSerialNumber" > <cfset stcReturn &= '{"label":"#LabelValue#", "value":"#LabelValue#", "missionAssetID": "#MAID#", "missionAssetDescription": "#MAD#", "ID" : "#ESNID#"}'> <cfif GetSerialNumber.CurrentRow NEQ GetSerialNumber.RecordCount> <cfset stcReturn &= ","> </cfif> </cfloop> <cfset stcReturn &= ']'> <cfreturn stcReturn> </cffunction>
内容的提问来源于stack exchange,提问作者FSUKXAZ
相关产品推荐
相关产品推荐

