[英]Manage two databases
我的项目中有一个配置文件(.php),其中包含一个包含所有项目设置的数组。 该数组具有类似于以下的结构:
'db' =>
'prod' =>
'host' => ''
'dbname' => ''
'username' => ''
'password' => ''
'local' =>
'host' => ''
'dbname' => ''
'username' => ''
'password' => ''
'other' => 'settings'
我的问题是:我将如何管理这些双重连接信息?
如果我在本地,是否应该在此文件的后面,将本地信息放入prod数组中? 还是我应该使用多个文件进行配置,并在此config.php中包含一个好文件(然后将其包含在该项目的每个文件中)?
你会怎么做?
谢谢。
正如@Dagon所说,通常您会检测到您所处的环境并阅读一种或另一种配置。
您可以通过PHP检测到它。 您可以从PHP读取主机名并相应地定义常量:
if(!defined('APPLICATION_ENV')) {
if(FALSE === stripos($_SERVER['SERVER_NAME']), 'www.example.com') {
define(APPLICATION_ENV, 'development');
} else {
define(APPLICATION_ENV, 'production');
}
}
这样,您完全不必依赖环境设置。
设置好之后(无论是在Apache的配置中,还是在系统级别),都可以使用getenv函数读取其值:
echo getenv('APPLICATION_ENV');
如果您想了解更多信息,可以阅读以下文章: 通过虚拟主机配置设置Application_ENV并在PHP中阅读
通过使用@Dagon的评论和@Pere Pages的答案,我得出了一个适合我的解决方案:
在$config
数组中,我有3个数组: use
, prod
和local
。
在use
我可以放置不会随环境(生产或本地主机)而改变的设置,并且我也具有随环境而改变的设置,但是它们是空的。
在prod
和local
,我有(那些这是在空适用于每个环境的设置use
)。
在同一个文件中,我遍历每条use
线(foreach),对于空的那一行,我用prod
或local
的适当值填充它们,具体取决于我的APPLICATION_ENV
(在我的机器上设置为local
)。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.