2013-08-31 200 views
0

也许标题似乎有点古怪,但我的问题是直的,怎么可以用重新初始化的Application.cfm应用程序,我知道我们是如何做的Application.cfc像如何重新初始化网站Application.cfm文件范围内

<cfscript> 
if(structKeyExists(url, 'reinit')) { 
    onApplicationStart(); 
} 
</cfscript> 

但如何在Application.cfm,不知道,请指导

感谢

回答

2

首先,运行onApplicationStart()没有更多的比重新运行onClick()鼠标点击事件处理程序的应用程序会导致你的鼠标按钮压抑。 onApplicationStart()被称为作为结果的应用程序启动,而不是相反。其次,Application.cfm与应用程序生命周期无关,它仅仅是一个CFML文件,包含在每个请求的开头。它与onRequestStart()的关联性比onApplicationStart()更为密切:不幸的是,该文件的名称错误。其对应的onRequestEnd.cfm演示了这一点。

我推测你的要求是重新初始化你的应用范围,是吗?你有你所有的应用程序范围的特定CFML文件中设置隔离,如:applicationSettings.cfm,然后有这样的逻辑在你Application.cfm

// Application.cfm 
if (!structKeyExists(application, "inited")){ 
    include "applicationSettings.cfm"; 
} 

(当时为applicationSettings.cfm最后一件事设置application.initedtrue) 。

如果是这样,你只需要修改你的条件,包括您的网址重新发起变量,如:

if (!structKeyExists(application, "inited") || structKeyExists(URL, "reinit")){ 
    include "applicationSettings.cfm"; 
} 
+0

为什么需要url.reinit到是一个布尔值 - 我通常只是检查它存在于URL中并将其留在那里?我曾经检查过真/假,但我认为这只是Fusebox时代的一种习惯......现在看不到它的意思了吗? (当然,在公共服务器上,检查特定密码以重新启动是有好处的,以避免潜在的基于应用程序的DoSing。) –

+0

好点@PeterBoughton:习惯的力量。这并不是说这件事会被认为是“虚假”,并且如果是这样的话,那么这是合法的行为;-)(代码更新) –

+0

当我将网站推到生产环境时,我倾向于将reinit设置为一个值无法轻易猜到,以致其他人无法重新启动应用程序。我为什么担心呢?我不知道。 @AdamCameron - 在我的应用程序中,我经常使用代码检查onrequestStart()中'reinit'的值,以简化对onApplicationStart()的调用。不知道为什么你暗示这不可能完成。 –

0

在OnRequestStart()把这样的事情:

param name='url.reloadApp' default='no'; 

if(url.reloadApp == 'yes') 
{ 
    applicationStop(); 
}