2013-08-31 83 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(); 
}