0

それぞれ独自のデータベースを持つ 2 つの独立したプロジェクト/サイトがあります。両者で共通のユーザー登録をしたい。ユーザー アカウント用に 3 つ目のデータベースを作成する必要がありますか?

これをどのように実装すればよいですか?私は PHP Code Igniter (Ion Auth を参照) を使用していますが、データベース構成を php 構成ファイルで設定する必要があるため、これも別の問題です。

4

2 に答える 2

2

http://codeigniter.com/user_guide/database/connecting.html

コード内:

application/config/database.php:

$db["default"]["hostname"] = "localhost";
$db["default"]["username"] = "username";
$db["default"]["password"] = "password";
$db["default"]["database"] = "database";

$db["userdatabase"]["hostname"] = "localhost";
$db["userdatabase"]["username"] = "username";
$db["userdatabase"]["password"] = "password";
$db["userdatabase"]["database"] = "database";

あなたのモデルでは:

$this->load->database('userdatabase');
// Do user stuff
$this->load->database('default');
于 2012-09-26T14:00:46.417 に答える
1

3 番目のデータベースを作成すると、(おそらく) 混乱することになります。どちらも「リモート」で接続する必要があり、両方が同じレコードを同時に更新したい場合はどうすればよいですか。扱いやすいですが、1 つをマスターとして、もう 1 つをスレーブとして持つと、より簡単になります。

次の 3 つのオプションがあります。

1) 常に「マスター」データベースに対して認証する - したがって、主に「データベース スレーブ」を使用している場合でも、認証/登録/パスワード変更などのために「データベース マスター」にホップしてから、「スレーブ」に戻ります。その他の操作。「マスター」のユーザーおよびセッション テーブルへの変更が発生した場合は、その変更を「スレーブ」にコピーする必要がありますが、それはかなりマイナーであり、モデルに組み込むことができます。これは私が最もよく使用するモデルであり、ちょっといじってドメイン/サーバーをホップすることもできます。

2) 常にローカル データベースに対して認証し、いずれかから他方に変更をコピーします。それが機能している間、どれが最新のものかわからないため、セッションテーブルを維持したまま混乱する可能性があります。

3) 「マスター」および「スレーブ」オプションに戻すと、連合テーブルをセットアップできます (http://dev.mysql.com/doc/refman/5.0/en/federated-storage-engine.html)。Federated tales は「UPDATE」をサポートしているため、「Slave」を更新すると、実際にはマスターが更新されます。ただし、データベースが同じサーバー上にあり、セッションテーブル (ステートレス/データベース処理セッションを行っていると仮定) がすべての呼び出しでアクセスされ、頻繁に更新されることを考慮しない限り、このオプションは避けます。ただし、それはオプションだと言っているだけです。

于 2012-09-26T14:18:34.597 に答える