ThinkPHP實現讀寫分離


基於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("數據添加失敗");  
        }  
    }  
}  

 

 

 

  1. <?php  
  2. return array(  
  3.     //'配置項'=>'配置值'  
  4.     'DB_DEPLOY_TYPE'=> 1, // 設置分布式數據庫支持  
  5.     'DB_TYPE'       => 'mysql'//分布式數據庫類型必須相同  
  6.     'DB_HOST'       => '192.168.20.195,192.168.20.201',  
  7.     'DB_NAME'       => 'hadoop'//如果相同可以不用定義多個  
  8.     'DB_USER'       => 'open,open',  
  9.     'DB_PWD'        => '123456,123456',  
  10.     'DB_PORT'       => '3306',  
  11.     'DB_PREFIX'     => '',  
  12. );  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM