onApplicationStart在超时后执行吗?

时间:2012-04-02 14:56:22

标签: coldfusion

在ColdFusion 9中,当应用程序达到其最大超时并转储内存空间时,应用程序是否会重建(即onApplicationStart是否会被调用)?

如果是,那么在何时超时或在下一页上调用?

2 个答案:

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