1

サイトを公開する準備をしています。更新は私のサイトで開発されているため、実際のデータに影響を与えることなく、実際のサーバーで更新をテストしたいと考えています。サイトに同時に接続するには、2 つのデータベース (2 つの名前を持つ同じデータベース) が必要です。1 つは自分自身をテストするためのもので、もう 1 つは実際のユーザーのためのものです。

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 つのデータベースを使用するにはどうすればよいですか? サイト全体の 2 つのコピーを保持することは良い考えではないと思います。すべての提案を歓迎します

4

3 に答える 3

1

構成ファイルmain.phpmain-test.phpに、index.phpindex-test.phpに複製することで実装できます。main-test.phpファイルで、新しい DB 接続プロパティを設定します。index-test.phpで構成へのパスを変更すると、デバッグを有効にすることもできます。index-test.php の例を次に示します。

$yii = '/opt/yii/framework/yii.php';
$config = dirname(__FILE__) . '/protected/config/main-test.php';

defined('YII_DEBUG') または define('YII_DEBUG', true);
defined('YII_TRACE_LEVEL') または define('YII_TRACE_LEVEL', 3);

require_once($yii);
Yii::createWebApplication($config)->run();

index-test.php を含む URL を使用することを忘れないでください。

于 2013-11-02T08:33:28.160 に答える
0

実際のデータに影響を与えることなく、実際のサーバーで更新をテストしたい

実際にはできません。ステージング環境でライブ データのコピーを使用して、動作を確認する方がはるかに優れています。コードで新しい DB フィールドが必要で、DB にそれがない場合、問題が発生します。

物事をチェックしている間、移行で非ライブデータに変更を加える方がよいでしょう。

于 2013-11-02T02:27:56.050 に答える
0

「DEVELOPMENT」または「PRODUCTION」に設定された環境変数を定義します

define('ENVIRONMENT', 'DEVELOPMENT');

次に、データベース接続はその定数に基づくことができます。

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

サイトを本番モードで動作させたい場合は、これを「PRODUCTION」に切り替えることができます。

ただし、本番マシンでテストを行うべきではありません。

于 2013-11-02T01:48:29.857 に答える