Coldfusion 动态更改“全局”数据源

Coldfusion 动态更改“全局”数据源,coldfusion,datasource,coldfusion-10,application.cfc,Coldfusion,Datasource,Coldfusion 10,Application.cfc,我通常在application.cfc的第一行中设置应用程序范围的数据源名称: <cfscript>THIS.datasource="mydsn";</cfscript> 如果我需要在代码的某些部分进行更改,该怎么办 具体来说,我的意思是: 如果cgi.server_名称等于www.firsturl.com=>this.datasource=firstdsn 如果cgi.server_名称等于www.secondurl.com=>this.datasource=seco

我通常在application.cfc的第一行中设置应用程序范围的数据源名称:

<cfscript>THIS.datasource="mydsn";</cfscript>
如果我需要在代码的某些部分进行更改,该怎么办

具体来说,我的意思是:

如果cgi.server_名称等于www.firsturl.com=>this.datasource=firstdsn 如果cgi.server_名称等于www.secondurl.com=>this.datasource=seconddsn
我能为每一个请求都这样做吗?

好吧,尽管我对你的原始帖子发表了评论——找出这些事情的最好方法就是试试看会发生什么,答案是:是的

Application.cfc的名称不好,因为它暗示它是某种特定于应用程序的,但实际上,整个过程都是在每个请求中实例化的。有些事件处理程序只在ApplicationStart/onSessionStart等的给定情况下运行,这一点既不存在,也不存在:整个过程都会运行每个请求。因此,与任何正在实例化的CFC一样,在每个请求中都会运行用于声明此作用域变量的伪构造函数代码

这意味着您可以根据特定于请求的信息请求、CGI、URL、表单等有条件地设置这些变量中的任何一个;但不是应用程序或会话。因此,基于CGI变量的条件可以正常工作

但不要相信我的话:试试看!总是尝试这些东西


最后,我在我的博客中深入讨论了Application.cfc中的运行时间。也许你在那里的时候可以阅读一下,或者看看Application.cfc上的其他文章。

好吧,尽管我对你原来的帖子有评论,但是找到这些东西的最好方法就是试试看,看看会发生什么,答案是:是的

Application.cfc的名称不好,因为它暗示它是某种特定于应用程序的,但实际上,整个过程都是在每个请求中实例化的。有些事件处理程序只在ApplicationStart/onSessionStart等的给定情况下运行,这一点既不存在,也不存在:整个过程都会运行每个请求。因此,与任何正在实例化的CFC一样,在每个请求中都会运行用于声明此作用域变量的伪构造函数代码

这意味着您可以根据特定于请求的信息请求、CGI、URL、表单等有条件地设置这些变量中的任何一个;但不是应用程序或会话。因此,基于CGI变量的条件可以正常工作

但不要相信我的话:试试看!总是尝试这些东西


最后,我在我的博客中深入讨论了Application.cfc中的运行时间。在这里,您可以阅读一下,或者看看Application.cfc上的其他文章。

这对您来说非常容易,您可以简单地进行测试,看看会发生什么?只要在应用程序中声明this.datasource.cfc时加上一个条件,您就可以很容易地进行测试,看看会发生什么,当然可以吗?只要在你的应用程序中声明this.datasource.cfc时加上一个条件…我还没有测试过这个,但是我想如果在onSessionEnd中发生任何查询,那么使用这个方法是需要小心的,因为CGI作用域不会有预期的值。是的,有一些奇怪的东西,而不是人们必然会想到的。太多了,没有主题要讲,但我在我的博客上对此进行了介绍:我还没有测试过,但我认为如果在onSessionEnd内部发生任何查询,那么使用这种方法需要小心,因为CGI范围不会有预期的值。是的,有些奇怪,而且不一定是人们所期望的。太多了,没有主题,我在我的博客上讨论过: