0

I have one .cfc that I use for all communication between client and server code. This cfc page has about 10 different function. Each function has different purpose and I have queries for Select, Insert, Update and Delete. I'm wondering if I should set timeout on the top of the .cfc page inside cfcomponent tag or this should be set inside of the each function or do I even need this? In our current system we have some many error messages like: The request has exceeded the allowable time limit Tag: CFQUERY.

I would like to prevent any similar error messages in my app. Here is example of my cfc page:

<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>

If anyone have suggestion what would be the best fix please let me know. Thank you.

espresso_coffee
  • 5,980
  • 11
  • 83
  • 193

1 Answers1

4

You should set the requesttimeout in the method that contains that long-running cfquery.

You don't want to "punish" all methods for just one method. If you set it for all, how do you know which one is slow and which one is okay, unless you don't care?

Alex Baban
  • 11,312
  • 4
  • 30
  • 44