如何重新初始化网站Application.cfm文件范围内
问题描述:
也许标题似乎有点古怪,但我的问题是直的,怎么可以用重新初始化的Application.cfm应用程序,我知道我们是如何做的Application.cfc像如何重新初始化网站Application.cfm文件范围内
<cfscript>
if(structKeyExists(url, 'reinit')) {
onApplicationStart();
}
</cfscript>
但如何在Application.cfm,不知道,请指导
感谢
答
首先,运行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.inited
到true
) 。
如果是这样,你只需要修改你的条件,包括您的网址重新发起变量,如:
if (!structKeyExists(application, "inited") || structKeyExists(URL, "reinit")){
include "applicationSettings.cfm";
}
答
在OnRequestStart()把这样的事情:
param name='url.reloadApp' default='no';
if(url.reloadApp == 'yes')
{
applicationStop();
}
为什么需要url.reinit到是一个布尔值 - 我通常只是检查它存在于URL中并将其留在那里?我曾经检查过真/假,但我认为这只是Fusebox时代的一种习惯......现在看不到它的意思了吗? (当然,在公共服务器上,检查特定密码以重新启动是有好处的,以避免潜在的基于应用程序的DoSing。) –
好点@PeterBoughton:习惯的力量。这并不是说这件事会被认为是“虚假”,并且如果是这样的话,那么这是合法的行为;-)(代码更新) –
当我将网站推到生产环境时,我倾向于将reinit设置为一个值无法轻易猜到,以致其他人无法重新启动应用程序。我为什么担心呢?我不知道。 @AdamCameron - 在我的应用程序中,我经常使用代码检查onrequestStart()中'reinit'的值,以简化对onApplicationStart()的调用。不知道为什么你暗示这不可能完成。 –