thinkphpマルチデータベース動的切り替え


thinkphpは国内で広く使われているPHPフレームワークとして、機能が強く、データベースのサポートもよく、mongo操作をサポートしています.私たちのプロジェクトは2台のデータベースを配置しています.構成方法は次のとおりです.
まずデフォルトのデータベースを構成し、2台、1つのプライマリとセカンダリを構成し、読み書きを分離します.
プロジェクトプロジェクトフォルダの下にあるコンフィギュレーション情報のConf/config.php
'DB_TYPE'               => 'mysqli',     //              mysqli
'DB_HOST'               => '10.1.80.28,10.1.80.29', //      
'DB_NAME'               => 'rr_home',          //     
'DB_USER'               => '******',      //    
'DB_PWD'                => '******',          //   
'DB_PORT'               => '3306,3307',        //   
'DB_PREFIX'             => 'rr_',     //       
'DB_FIELDTYPE_CHECK'    => false,        //           
'DB_FIELDS_CACHE'       => true,         //       
'DB_CHARSET'            => 'utf8',       //          utf8
'DB_DEPLOY_TYPE'        => 1,		 //        :0    (     ),1    
'DB_RW_SEPARATE'        => true,         //                
'DB_MASTER_NUM'         => 1,            //             

コンフィギュレーションphpの後、データモデルクラスはthinkphpのコアクラスライブラリModelクラスを継承し、thinkphpが提供するデータベース操作方法を直接呼び出すことができます.
アクティブモデルデータベース構成
Confフォルダの下に新しいactivity.phpファイル、アクティブライブラリの構成情報がファイルに書き込まれます
return array(
	'DB_CONFIG' => array(
	    'db_type'  => 'mysql',   //       mysql
	    'db_host'  => '10.1.80.28',
	    'db_user'  => '******',
	    'db_pwd'   => '******',
	    'db_name'  => 'rr_activity',
	    'db_port'  => '3306',
	    'db_prefix'=> 'rr_'
	),
);

config.phpに以下のコードを加えるactivityをロードする.php拡張構成
'LOAD_EXT_CONFIG' => array('ACTIVITY'=>'activity'),

新しいActivity Model.class.phpはModelを継承する.class.php
table_prefix = $this->table_prefix ? $this->table_prefix : C('DB_PREFIX');
        $this->connection = !empty($this->connection) ? array_merge(C('ACTIVITY.DB_CONFIG'), $this->connection) : C('ACTIVITY.DB_CONFIG');
        parent::__construct($this->table_name,$this->table_prefix,$this->connection,888);
    }
}

注意:親Modelクラスを呼び出す構造方法を初期化し、データベース接続のidを表すパラメータ888を追加しました.アクティブライブラリの接続idを固定888と指定します(デフォルトmongoの接続idは999です).
他のアクティブなクラスは、アクティブな親クラスを継承し、thinkphpが提供するデータベース操作方法を直接呼び出すことができ、読み書きは10.1.8.28.28というデータベースにのみ適用されます.