2017-10-13 267 views
0

我有一個。我用於客戶端和服務器代碼之間的所有通信的cfc。這個cfc頁面有大約10個不同的功能。每個函數都有不同的用途,我有查詢選擇,插入,更新和刪除。我想知道是否應該在cfcomponent標記的.cfc頁面的頂部設置timeout或者這應該設置在每個函數的內部還是我需要這個?在我們當前的系統中,我們有一些錯誤消息,如:The request has exceeded the allowable time limit Tag: CFQUERYColdfusion在.cfc頁面中設置超時?

我想在我的應用程序中防止任何類似的錯誤消息。這裏是我的cfc頁面的示例:

<cfcomponent> 
    <cfset currentDate = DateFormat(Now(),'mm/dd/yyyy')> 
    <cfset currentTime = TimeFormat(Now(),'hh:mm tt')> 

    <cfinvoke component="appEntry" method="getRecord" returnvariable="CHKAccess"> 
     <cfinvokeargument name="user" value="userdata"/> 
     <cfinvokeargument name="app" value="myApp"/> 
    </cfinvoke> 

    <cfset adminAccess = false> 
    <cfset userAccess = false> 

    <cfif CHKAccess.RecordCount EQ 1> 
     <cfif CHKAccess.pd_hfmAccess EQ 'A'> 
      <cfset adminAccess = true> 
     </cfif> 
     <cfif CHKAccess.pd_hfmAccess EQ 'U'> 
      <cfset userAccess = true> 
     </cfif> 
    </cfif> 

    <cffunction name="getData" access="remote" output="true" returnformat="JSON"> 
     <cfargument name="keyVal" type="string" required="true"> 

     <cfset fnResults = structNew()> 

     <cfif userAccess> 
      <cfquery name="getRec" datasource="tes"> 
       SELECT some columns 
       FROM Test 
      </cfquery> 

      <cfset fnResults.status = "200"> 
     <cfelse> 
      <cfset fnResults.status = "400"> 
      <cfset fnResults.message = "Invalid access attempt."> 
     </cfif> 

     <cfreturn fnResults> 
    </cffunction> 

    <!--- More functions below ---> 
</cfcomponents> 

如果有人有任何建議什麼是最好的修復請讓我知道。謝謝。

+1

這裏有一個Application.cfc或Application.cfm嗎? –

+0

@DanBracuk它是Application.cfc –

+0

如果您想在每個頁面上設置超時,請將代碼寫入Application.cfc的onRequestStart方法。請記住,查詢也有一個默認的超時時間。如果你知道哪些是慢的,給他們一個更長的超時時間。 –

回答

4

您應該在包含long-running cfquery的方法中設置requesttimeout

你不想只爲一種方法「懲罰」所有的方法。如果你全部設置它,你怎麼知道哪一個很慢,哪一個是好的,除非你不在乎?

+0

絕大多數這些cfqueries都用於單個記錄。但在某些情況下,他們可以在5或6k的時間內獲取大量記錄。 –

+0

我只是想知道什麼是這樣的最佳做法。 –

+0

關於「你怎麼知道哪一個很慢,哪一個沒問題」,ColdFusion Administrator Server Monitor可以提供幫助。 –