繁体   English   中英

管理两个数据库

[英]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个数组: useprodlocal

use我可以放置不会随环境(生产或本地主机)而改变的设置,并且我也具有随环境而改变的设置,但是它们是空的。

prodlocal ,我有(那些这是在空适用于每个环境的设置use )。

在同一个文件中,我遍历每条use线(foreach),对于空的那一行,我用prodlocal的适当值填充它们,具体取决于我的APPLICATION_ENV (在我的机器上设置为local )。

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM