thinkphpマルチデータベース動的切り替え
thinkphpは国内で広く使われているPHPフレームワークとして、機能が強く、データベースのサポートもよく、mongo操作をサポートしています.私たちのプロジェクトは2台のデータベースを配置しています.構成方法は次のとおりです.
まずデフォルトのデータベースを構成し、2台、1つのプライマリとセカンダリを構成し、読み書きを分離します.
プロジェクトプロジェクトフォルダの下にあるコンフィギュレーション情報のConf/config.php
コンフィギュレーションphpの後、データモデルクラスはthinkphpのコアクラスライブラリModelクラスを継承し、thinkphpが提供するデータベース操作方法を直接呼び出すことができます.
アクティブモデルデータベース構成
Confフォルダの下に新しいactivity.phpファイル、アクティブライブラリの構成情報がファイルに書き込まれます
config.phpに以下のコードを加えるactivityをロードする.php拡張構成
新しいActivity Model.class.phpはModelを継承する.class.php
注意:親Modelクラスを呼び出す構造方法を初期化し、データベース接続のidを表すパラメータ888を追加しました.アクティブライブラリの接続idを固定888と指定します(デフォルトmongoの接続idは999です).
他のアクティブなクラスは、アクティブな親クラスを継承し、thinkphpが提供するデータベース操作方法を直接呼び出すことができ、読み書きは10.1.8.28.28というデータベースにのみ適用されます.
まずデフォルトのデータベースを構成し、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というデータベースにのみ適用されます.