如何处理CFLOCK超时错误?

时间:2012-11-12 17:57:18

标签: coldfusion

我正在使用ColdFusion 8和jQuery。

我正在开发一个通过jQuery执行多个ajax调用的页面。我经常在其中一个通过ajax调用的页面上看到应用程序超时错误。我没有得到每个ajax调用的错误。我每次都不会在同一个电话上收到错误。

根据我的理解,错误是由每个尝试同时访问同一应用程序变量的不同页面引起的。我不确定解决问题的最佳方法是什么。

代码似乎设置了两秒超时。这似乎过分了。 cflock应该设置为只读吗?还有其他建议吗?

 A timeout occurred while attempting to lock the Application scope.

 The error occurred in E:/INETPUB/WWWROOT/DEV/AVCAT/Application.cfm: line 53
 Called from E:/INETPUB/WWWROOT/DEV/Application.cfm: line 1
 Called from E:/INETPUB/WWWROOT/DEV/Application.cfm: line 53
 Called from E:/INETPUB/WWWROOT/DEV/Application.cfm: line 1

 51 : 
 52 : <!---<cfif NOT IsDefined("application.datasource")>--->
 53 :   <cflock timeout="#CreateTimeSpan(0,0,2,0)#" SCOPE="Application">

1 个答案:

答案 0 :(得分:3)

timeout标记的cflock属性需要几秒钟。因此,如果你想要一个两分钟的超时时间,那么应该将timeout属性设置为120.就像这样(我同意这似乎过多):

<cflock timeout="120" SCOPE="Application">

CreateTimeSpan()函数返回日期/时间对象。我不确定你的cflock是如何解释超时的那个值的。

至于使用exclusive锁定与readonly锁定。如果您的代码只读取应用程序范围变量而不是使用readonly锁定。如果您的代码设置应用程序范围变量而不是使用exclusive锁定。通过不指定exclusive属性使用正在使用的type锁定将导致该代码为单线程。那可能是你的问题。