基於thinkphp3.2.3,官方手冊:http://www.kancloud.cn/manual/thinkphp/1733
注意事項:
1、首先得配置好MySQL主從,可以多主多從
2、在讀寫分離的情況下,默認第一個數據庫配置是主服務器的配置信息,負責寫入數據,如果設置了DB_MASTER_NUM參數,則可以支持多個主服務器寫入。其它的都是從數據庫的配置信息,負責讀取數據,數量不限制。每次連接從服務器並且進行讀取操作的時候,系統會隨機進行在從服務器中選擇
3、調用模型的CURD操作的話,系統會自動判斷當前執行的方法的讀操作還是寫操作,如果你用的是原生SQL,那么需要注意系統的默認規則: 寫操作必須用模型的execute方法,讀操作必須用模型的query方法,否則會發生主從讀寫錯亂的情況
config.php
<?php return array( //'配置項'=>'配置值' 'DB_DEPLOY_TYPE'=> 1, // 設置分布式數據庫支持 'DB_TYPE' => 'mysql', //分布式數據庫類型必須相同 'DB_HOST' => '192.168.20.195,192.168.20.201', 'DB_NAME' => 'hadoop', //如果相同可以不用定義多個 'DB_USER' => 'open,open', 'DB_PWD' => '123456,123456', 'DB_PORT' => '3306', 'DB_PREFIX' => '', );
讀寫分離測試
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { //查詢 從庫 public function index(){ $obj=M("user"); $data=$obj->select(); print_r($data);exit; } //寫入 主庫 public function add() { $obj=M("user"); $data["name"]="測試名字"; if ($obj->add($data)) { //$this->success("數據添加成功") ; }else { //$this->error("數據添加失敗"); } } }
- <?php
- return array(
- //'配置項'=>'配置值'
- 'DB_DEPLOY_TYPE'=> 1, // 設置分布式數據庫支持
- 'DB_TYPE' => 'mysql', //分布式數據庫類型必須相同
- 'DB_HOST' => '192.168.20.195,192.168.20.201',
- 'DB_NAME' => 'hadoop', //如果相同可以不用定義多個
- 'DB_USER' => 'open,open',
- 'DB_PWD' => '123456,123456',
- 'DB_PORT' => '3306',
- 'DB_PREFIX' => '',
- );