日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php 动态切换数据库,thinkphp多数据库动态切换

發(fā)布時間:2024/10/12 php 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 动态切换数据库,thinkphp多数据库动态切换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

thinkphp作為國內(nèi)使用廣泛的PHP框架,功能很強(qiáng)大,數(shù)據(jù)庫支持方面做的也很好,并支持mongo操作,我們的項目是配置了兩臺數(shù)據(jù)庫,一主一從,讀寫分離,最近要做一個活動,要求讀寫都在一個庫上,所以需要動態(tài)建立多個數(shù)據(jù)庫連接,主連接跟活動數(shù)據(jù)庫連接,配置方式如下

首先配置默認(rèn)數(shù)據(jù)庫,兩臺,一主一從,讀寫分離

配置信息在項目工程文件夾下的Conf/config.php

'DB_TYPE' => 'mysqli', // 數(shù)據(jù)庫類型 注意這里用的是mysqli

'DB_HOST' => '10.1.80.28,10.1.80.29', // 服務(wù)器地址

'DB_NAME' => 'rr_home', // 數(shù)據(jù)庫名

'DB_USER' => '******', // 用戶名

'DB_PWD' => '******', // 密碼

'DB_PORT' => '3306,3307', // 端口

'DB_PREFIX' => 'rr_', // 數(shù)據(jù)庫表前綴

'DB_FIELDTYPE_CHECK' => false, // 是否進(jìn)行字段類型檢查

'DB_FIELDS_CACHE' => true, // 啟用字段緩存

'DB_CHARSET' => 'utf8', // 數(shù)據(jù)庫編碼默認(rèn)采用utf8

'DB_DEPLOY_TYPE' => 1, // 數(shù)據(jù)庫部署方式:0 集中式(單一服務(wù)器),1 分布式

'DB_RW_SEPARATE' => true, // 數(shù)據(jù)庫讀寫是否分離 主從式有效

'DB_MASTER_NUM' => 1, // 讀寫分離后 主服務(wù)器數(shù)量

配置好config.php之后,數(shù)據(jù)模型類繼承thinkphp的核心類庫Model類,那么該模型類便可以直接調(diào)用thinkphp提供的數(shù)據(jù)庫操作方法

活動模型數(shù)據(jù)庫配置

Conf文件夾下新建activity.php文件,活動庫的配置信息寫到該文件內(nèi)

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內(nèi)加入以下代碼加載activity.php擴(kuò)展配置

'LOAD_EXT_CONFIG' => array('ACTIVITY'=>'activity'),

新建ActivityModel.class.php繼承Model.class.php

/**

* 活動model基類

*/

abstract class ActivityModel extends Model

{

//mongo對象

protected $m = null;

protected $autoCheckFields = false;//取消自動檢測表字段

protected $table_name = '';

protected $table_prefix = 'rr_';

// protected $connection = "mysql://******:******@10.1.80.28:3306/rr_activity";

protected $connection = array();

public function __construct()

{

$this->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);

}

}

注意:初始化調(diào)用父類Model類的構(gòu)造方法,加了一個參數(shù):888,這個代表該數(shù)據(jù)庫連接的id,指定活動庫的連接id為固定的888(默認(rèn)mongo的連接id為999) 其他活動用的類繼承該活動父類,便可以直接調(diào)用thinkphp提供的數(shù)據(jù)庫操作方法,并且讀寫只在10.1.80.28這一臺數(shù)據(jù)庫上。

總結(jié)

以上是生活随笔為你收集整理的php 动态切换数据库,thinkphp多数据库动态切换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。