你不会说代码是在哪里或者是如何/何时执行,所以不可能自信地回答你的问题。
如果它在Application.cfc中的onApplicationStart()中,那么 - 是的 - 它只会在应用程序启动时执行。
但是,如果它只是在某个文件中,每次调用该文件时都会重新执行,除非您采取措施确保调用而不是。 EG:把条件周围:
<cfif not (structKeyExists(application, "components") and structKeyExists(application.components, "blog"))>
<cfset application.components.blog = createObject('component','sharedcomponents.cfc.blog').init()>
</cfif>
你好像如果一些魔术发生在因为你的变量赋值设定一些在应用范围是CF会自动知道,如果该文件不重新运行它想知道它的在重新执行。不,CF只是按照它所告诉的:如果你告诉它运行该代码,它将被运行。不管变量分配的范围如何。
您继续询问有关检测文件是否已更新并相应地重新启动整个应用程序。这些文件如何更新?我认为它是活动部署过程的一部分(例如:你需要做一些部署)。如果是这样的话,是不是你处于最佳位置知道应用何时需要重启?首先,并非每个代码更改都会保证应用程序重新启动,所以您不想自动执行这些操作,我应该这样想?
如果您需要重新启动应用程序,您应该有一个运行applicationStop()
的脚本。有些人的onRequestStart()
检查URL参数,如果它通过,则会调用applicationStop()
,但我个人认为这是错误的地方。对于几乎所有的条件都不相关的请求,所以没有必要检查它对每一百万次事件的请求,因为它实际上是相关的。我更喜欢有一个单独的脚本来完成它,这被称为需求必须。
我觉得CFIF的第二部分应读“而不是structKeyExists(application.components,‘博客’)”我试图编辑代码,但StackOverflow上有一个愚蠢的生意规则编辑需要6个“非空间”字符或更多。 – 2012-07-11 12:02:18
@Scott:整个事情都是在'NOT',配偶。除非我错过了一些东西,这就是我们想要的。如果'application.components.blog'不存在,那么设置它。否则继续前进。 – 2012-07-11 13:41:22
Ack ....所以这是....愚蠢的老眼睛和括号...... – 2012-07-11 14:55:38