我正在使用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">
答案 0 :(得分:3)
timeout
标记的cflock
属性需要几秒钟。因此,如果你想要一个两分钟的超时时间,那么应该将timeout
属性设置为120.就像这样(我同意这似乎过多):
<cflock timeout="120" SCOPE="Application">
CreateTimeSpan()
函数返回日期/时间对象。我不确定你的cflock
是如何解释超时的那个值的。
至于使用exclusive
锁定与readonly
锁定。如果您的代码只读取应用程序范围变量而不是使用readonly
锁定。如果您的代码设置应用程序范围变量而不是使用exclusive
锁定。通过不指定exclusive
属性使用正在使用的type
锁定将导致该代码为单线程。那可能是你的问题。