在ColdFusion 9中,当应用程序达到其最大超时并转储内存空间时,应用程序是否会重建(即onApplicationStart是否会被调用)?
如果是,那么在何时超时或在下一页上调用?
答案 0 :(得分:6)
当应用程序超时时,将使用 next 请求向应用程序调用onApplicationStart()。但是对应用程序的每个请求都会重置计时器。换句话说,对于应用程序“超时”,它必须在作为应用程序超时属性指定的时间长度内空闲(服务零请求)。
答案 1 :(得分:1)
如果你想亲眼看看onApplicationStart()方法刚刚触发,你可以在方法的最后做这样的事情:
<cfscript>
// GOES WITHIN THE ON APPLICATION START METHOD
APPLICATION.AppSettings.ThisDomain = CGI.HTTP_HOST;
if (APPLICATION.AppSettings.ThisDomain == "YourAwesomeDomain.com") {
APPLICATION.AppSettings.ProductionMode = true;
} else if (APPLICATION.AppSettings.ThisDomain == "127.0.0.1:8500") {
APPLICATION.AppSettings.ProductionMode = false;
} else {
abort;
}
// STALL THE APP IF IT IS IS DEVELOPMENT MODE
if (APPLICATION.AppSettings.ProductionMode == true) {
writeoutput("<h1>Just FIRED UP the APPLICATION in DEVELOPMENT mode.</h1>");
writeoutput("<a href="">continue.</a>");
abort;
}
</cfscript>
如果您在5秒后超时应用程序并且频率超过5秒点击此页面,您将看到“刚刚启动”消息。如果您以低于5秒的频率点击页面,则不会看到此消息。
您可以对此进行扩展,以便在创建新会话时查看:
<cfscript>
// GOES WITHIN THE ON SESSION START METHOD
// STALL THE APP IF IT IS IS DEVELOPMENT MODE
if (APPLICATION.AppSettings.ProductionMode == true) {
writeoutput("<h1>Just FIRED UP a new SESSION in DEVELOPMENT mode.</h1>");
writeoutput("<a href="">continue.</a>");
abort;
}
</cfscript>