管理两个数据库
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');
如果您想了解更多信息,可以阅读此 post:
Set Application_ENV via virtual host config and read this in PHP
通过@Dagon 的评论和@Pere Pages 的回答,我得出了一个适合我的解决方案:
在我的 $config
数组中,我有 3 个数组:use
、prod
和 local
。
在use
中,我可以放置不会根据环境(生产或本地主机)而改变的设置,我也有根据环境而改变的设置,但它们是空的。
在prod
和local
中,我有适合每个环境的设置(在use
中是空的)。
在同一个文件中,我检查了 use
(foreach) 的每一行,对于空行,我用来自 prod
或 [=13= 的适当值填充它们],取决于我的 APPLICATION_ENV
(在我的机器上设置为 local
)。
谢谢。
我的项目中有一个配置文件 (.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');
如果您想了解更多信息,可以阅读此 post: Set Application_ENV via virtual host config and read this in PHP
通过@Dagon 的评论和@Pere Pages 的回答,我得出了一个适合我的解决方案:
在我的 $config
数组中,我有 3 个数组:use
、prod
和 local
。
在use
中,我可以放置不会根据环境(生产或本地主机)而改变的设置,我也有根据环境而改变的设置,但它们是空的。
在prod
和local
中,我有适合每个环境的设置(在use
中是空的)。
在同一个文件中,我检查了 use
(foreach) 的每一行,对于空行,我用来自 prod
或 [=13= 的适当值填充它们],取决于我的 APPLICATION_ENV
(在我的机器上设置为 local
)。
谢谢。