kunitsuji
tsuji****@m-s*****
2009年 7月 23日 (木) 13:02:29 JST
kunitsujiです。 decoyさん。 なるほど。了解です。 loaderはどちらにしても手をいれているので、やってみます。 >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 mailing list >Codei****@lists***** >http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users