2

我正在使用 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">
4

1 回答 1

3

标记的timeout属性cflock是预计秒数。因此,如果您想要两分钟的超时时间,则该timeout属性应设置为 120。像这样(我同意这似乎过分):

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

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

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

于 2012-11-12T18:15:36.563 回答