1

我的网站正准备上线。由于在我的网站上开发了更新,我想在真实服务器中测试更新而不影响真实数据。我需要 2 个数据库(具有 2 个名称的同一个数据库)来同时连接我的站点。一个用于测试我自己,另一个用于真正的用户。

我尝试将 config/main 复制到 config/main_test 并将主 index.php 复制到 index_test.php。并在 config/main.php 和 config/main_test.php 中实现了 2 个数据库连接。并将这些文件连接到 index.php 和 index_test.php 并尝试使用http://mysite.com/index.phphttp://mysite.com/index_test.php运行该站点。但是这两个 url 都基于 config/main.php 中提供的数据库连接工作。

我怎样才能使用这两个数据库?我不认为保留整个网站的 2 个副本是一个好主意。欢迎所有建议

4

3 回答 3

1

您可以通过将配置文件main.php复制到main-test.php并将index.php复制到index-test.php来实现它。在main-test.php文件中设置新的数据库连接属性。在index-test.php中更改配置路径,您也可以启用调试。这是您的 index-test.php 的示例:

$yii = '/opt/yii/framework/yii.php';
$config = 目录名(__FILE__) 。'/protected/config/main-test.php';

定义('YII_DEBUG') 或定义('YII_DEBUG', true);
定义('YII_TRACE_LEVEL') 或定义('YII_TRACE_LEVEL', 3);

需要一次($yii);
Yii::createWebApplication($config)->run();

并且不要忘记使用带有 index-test.php 的 URL。

于 2013-11-02T08:33:28.160 回答
0

我想在真实服务器中测试更新而不影响真实数据

你实际上不能。最好在暂存环境中使用实时数据的副本来确保一切正常。如果您的代码需要新的数据库字段而您的数据库没有它,那么您将遇到问题。

最好在检查时让迁移对非实时数据进行更改。

于 2013-11-02T02:27:56.050 回答
0

定义一个设置为“DEVELOPMENT”或“PRODUCTION”的环境变量

define('ENVIRONMENT', 'DEVELOPMENT');

然后您的数据库连接可以基于该常数。

if(ENVIRONMENT == 'DEVELOPMENT'){
    //connect to development database
}

当您希望站点在生产模式下工作时,可以将其切换为“生产”。

不过,您不应该在生产机器上进行测试。

于 2013-11-02T01:48:29.857 回答