OnApplicationStart выполняется после истечения времени ожидания? - PullRequest
1 голос
/ 02 апреля 2012

В ColdFusion 9, когда приложение достигает своего максимального тайм-аута и освобождается пространство памяти, перестраивается ли приложение (т. Е. Вызывается ли onApplicationStart)?

Если да, то в какой момент тайм-аут или наследующая страница звонка?

Ответы [ 2 ]

6 голосов
/ 02 апреля 2012

Когда время ожидания приложения истекает, вызывается onApplicationStart () с запросом next к приложению. Но каждый запрос к приложению сбрасывает таймер. Другими словами, чтобы приложение «истекло», оно должно простаивать (обслуживая нулевые запросы) в течение периода времени, указанного в качестве свойства времени ожидания приложения.

1 голос
/ 02 апреля 2012

Если вы хотите убедиться, что метод 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>
...