1

codeigniter を使用して Web ベースのアプリケーションを開発しています。これはさまざまなクライアントで使用され、それぞれに独自のデータベースがありますが、コードベースは同じです。

アクセスするクライアント、つまりURLに基​​づいて、データベースの名前をdatabase.phpに設定できるようにしたいと考えています。したがって、clientA.com がアクセスする場合はデータベース名を clintA に設定し、clientB.com がアクセスする場合は clientB.com に設定する必要があります。

これにどのようにアプローチする必要があるかについてのアイデア。

4

1 に答える 1

4

いくつかの方法が考えられますが、おそらく最も簡単な方法は、構成ファイルでデータベース グループを使用することです。application/config/database.php ファイルで、多次元配列を使用して、クライアントごとに異なるグループを作成します。したがって、次のことができます。

$db['clientA']['hostname'] = ...
$db['clientA']['username'] = ...
etc...
$db['clientB']['hostname'] = ...
$db['clientB']['username'] = ...
etc...

アプリケーションで、必要なグループをロード コマンドに渡すだけです。

$this->load->database('clientA');

これを getenv と組み合わせてホスト名を取得すると、すべての設定が完了します。

$clientHost = getenv('HTTP_HOST');
$this->load->database($clientHost);

もちろん、さらに多くのロジックが必要になる可能性がありますが、それで開始できるはずです。

于 2012-10-11T11:15:36.727 に答える