[Codeigniter-users] CIのDBクラスを使った場合の処理で質問

Back to archive index

decoy youtu****@gmail*****
2009年 7月 23日 (木) 13:01:00 JST


decoyです。

> autoloadで配列でわたせるんですね。。。知りませんでした(笑)

配列で渡せるというか、
下記のような配列で渡して複数のDBサーバへ接続出来るよう改造(Loader.phpを拡張)しています。
デフォルトでは無理ですね。

// decoy

2009/07/23 11:34 に kunitsuji<tsuji****@m-s*****> さんは書きました:
>  kunitsujiです。
>
> decoyさん。
>
> をを、こんな感じのものが欲しかったんですー。
> autoloadで配列でわたせるんですね。。。知りませんでした(笑)
> 参考にさせていただきます!
>
>>decoyです。
>>
>>私の場合は下記のような感じで更新系と参照系を分けています。
>>
>>1.
>>system/application/config/autoload.php に通常であれば
>>$autoload['libraries'] = array('database'); と書くところを
>>下記のような感じで書く。
>>
>>$autoload['libraries'] = array(
>>    'database' => array(
>>        'db' => 'Master',
>>        'slavedb' => 'Slave',
>>    ),
>>);
>>
>>2.
>>system/application/config/database.php に繋ぎたいDBサーバの数だけ設定を書く。
>>
>>
>>$db['Master'] = array(
>>・・・
>>);
>>
>>$db['Slave'] = array(
>>・・・
>>);
>>
>>3.
>>Loader.phpを継承したMY_Loader.phpを作成し、
>>Loader::databaseやLoader::_ci_autoloader辺りをオーバーライドし、
>>2で設定した数だけDBに接続するようにする。
>>
>>
>>
>>こうすることで、モデル辺りで更新系の処理を行いたければ、
>>$this->db の後にSQLを書いたり、$this->db->insert(); したり、
>>参照系の処理を行いたければ、$this->slavedb の後に
>>SQLを書いたり、$this->slavedb->get(); したりすればOKです。
>>
>>以上、ご参考まで。
>>
>>
>>// decoy
>>
>>----- Original Message -----
>>From: <usagi****@ezweb*****>
>>To: <codei****@lists*****>
>>Sent: Tuesday, July 21, 2009 8:24 PM
>>Subject: Re: [Codeigniter-users] CIのDBクラスを使った場合の処理で質問
>>
>>
>>> kunitsujiです。
>>> やはり、DBクラスのラッパーを作って、
>>> アクティブレコードでインサートとか書いたら、そこで切り分けるしかないか
>>> な。。。
>>>
>>> 誰もやってないんですかね。
>>>
>>> ちなみにPNEは、リード、ライトの上で、処理関数を使ってますが、そこで吸収して
>>> ますよ。少し凄いですね(笑)
>>> まあ、PEARのDBクラスをラッピングしてるんですが。
>>>
>>>>安藤です。
>>>>
>>>>2009/07/21 19:54 に <usagi****@ezweb*****> さんは書きました:
>>>>> kunitsujiです。
>>>>> 安藤さん、どうも。
>>>>> 例えば、最初1つのDBでアプリを動かして、あとで1台追加する場合、アプリ側は
>>>>> 意識をしたくないんですよ。
>>>>>
>>>>> 設定に一つ足すだけで、フレームワーク側が吸収して欲しいのです。
>>>>> CIを考えた場合は確かに、CIの責務ではないように感じますね。
>>>>> アプリケーションのベースでやるべきかな。
>>>>> MyNETS2のベースでやるべきだとは思いますが、DBまわりって継承簡単に出来ない
>>>>> 仕組みなんですよね(笑)
>>>>
>>>>単純に考えるなら、本でも書きましたが、
>>>>read系、write系ってモデルを切り分けることでしょうかね。
>>>>これだと、OpenPNEと一緒になってしまいますがw
>>>>
>>>>ちょっと考えましたが、writeでもreadはするので、共通モデルの
>>>>汎用性ががた落ちになりそうですね。
>>>>
>>>>//安藤
>>>>
>>>>
>>>>>
>>>>>>安藤です。
>>>>>>
>>>>>>2009/07/21 19:36 に kunitsuji<tsuji****@m-s*****> さんは書きました:
>>>>>>> kunitsujiです。
>>>>>>>
>>>>>>> CIのDBクラスを使って、接続先DBを変えることができます。
>>>>>>> たとえば、MySQLでマスターとスレーブを切り替えるような場合ですね。
>>>>>>>
>>>>>>> この時に思ったのですが、
>>>>>>> subのDBに記述がある場合、自動的に更新系の処理はdefault、SELECT系の処理
>>>>>>>>>>>>>>
>>>>>>> sub、見たいなことってできないもんでしょうかね。。。
>>>>>>>
>>>>>>> 実際ほとんどのアプリではdatabaseをつかうので、autoloadで読み込みしたり
>>>>>>>>>>>>>>
>>>>>>> てますので、都度modelで呼び出すのもどうかと思うし。
>>>>>>>
>>>>>>> このあたりうまく処理してるひといますか?
>>>>>>
>>>>>>この辺って、フレームワーク側でやるなら明示的にやる場合が多いと思います。
>>>>>>自動だと、誰もが望む構成になりえないと言うか。
>>>>>>
>>>>>>自動的ってなると、負荷分散側に任せたほうが良くないでしょうか?
>>>>>>#クラスタリング
>>>>>>
>>>>>>//安藤
>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Codeigniter-users mailing list
>>>>>>> Codei****@lists*****
>>>>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>--
>>>>>>-------------------------------------------------------------------------
>>>>>>---------------
>>>>>>株式会社 音生
>>>>>>安藤 建一
>>>>>>愛知県名古屋市中区金山5丁目11−6
>>>>>>名古屋ソフトウェアセンタービル1F
>>>>>>TEL : 052-884-0017
>>>>>>FAX : 052-884-0018
>>>>>>URL : http://neo-navi.net/
>>>>>>-------------------------------------------------------------------------
>>>>>>---------------
>>>>>>
>>>>>>_______________________________________________
>>>>>>Codeigniter-users mailing list
>>>>>>Codei****@lists*****
>>>>>>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>>
>>>>> _______________________________________________
>>>>> Codeigniter-users mailing list
>>>>> Codei****@lists*****
>>>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>>
>>>>_______________________________________________
>>>>Codeigniter-users mailing list
>>>>Codei****@lists*****
>>>>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>
>>> _______________________________________________
>>> Codeigniter-users mailing list
>>> Codei****@lists*****
>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>
>>_______________________________________________
>>Codeigniter-users mailing list
>>Codei****@lists*****
>>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>




Codeigniter-users メーリングリストの案内
Back to archive index