2013-08-31 2 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.inited в true) ,

Если так что вам просто нужно изменить свое состояние, чтобы включить ваш URL переменную REINIT, например:

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

Почему требуется url.reinit в быть логическим - я обычно проверяю его в URL-адресе и оставляю его на этом? Я использовал для проверки true/false, но я думаю, что это только привычка от Fusebox дней ... теперь не вижу смысла? (Конечно, на общедоступном сервере есть преимущество в проверке на определенный пароль для повторной инициализации, чтобы избежать потенциальной DoSing на основе appreload.) –

+0

Хорошая точка @PeterBoughton: сила привычки. Это не то, что когда-либо будет передано как «ложное», и чтобы там было законное действие, если это так ;-) (код обновлен) –

+0

Когда я выталкиваю сайт для производства, я стараюсь, чтобы установить повторно на значение что нельзя легко догадаться, чтобы другие не могли повторно использовать приложение. Почему я беспокоюсь об этом? Я не знаю. @AdamCameron - в моих приложениях у меня часто есть код, который проверяет значение «reinit» в 'onrequestStart()', который просто вызывает 'onApplicationStart()'. Не уверен, почему вы подразумевали это, это невозможно. –

0

В OnRequestStart() поставить что-то вроде этого:

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

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