ThinkPHP的主從數據庫配置


Thinkphp 框架本身是支持讀寫分離的,如何做呢?
 
最簡單的做法是在配置文件中修改:
 
PHP代碼
  1. 'DB_TYPE'=> 'mysql',     
  2. 'DB_DEPLOY_TYPE' => 1,  //開打支持多服務器                  
  3. 'DB_RW_SEPARATE'=>true, //讀寫<strong>分離</strong>分開    
  4. 'DB_HOST'=> '192.168.100.78,192.168.100.60', // 數據庫服務器地址 master(寫)/slave(讀)    
  5. 'DB_NAME'=>'test',                   
  6. 'DB_USER'=>'root',                 
  7. 'DB_PWD'=>'root',           
  8. 'DB_PREFIX' => 'fav_',     
默認第一台數據庫78是主數據庫,負責寫入操作,第二台60負責讀操作,Thinkphp 會自動識別讀和寫,然后分配鏈接對應的數據庫,來達到讀寫分離的效果。
 
注意事項:
 
1. 如果要設置分布式數據庫,暫時不支持DB_DSN方式配置。
2.如果你當前采用了分布式數據庫,並且設置了讀寫分離的話,query方法始終是在讀服務器執行,因此query方法對應的都是讀操作,而不管你的SQL語句是什么。
3.如果你當前采用了分布式數據庫,並且設置了讀寫分離的話,execute方法始終是在寫服務器執行,因此execute方法對應的都是寫操作,而不管你的SQL語句是什么。
 
因此,'DB_DSN'=> 'mysql:host=192.168.100.60;dbname=51fanli_cang', 這種方式不支持主從分離,需要改。
 
當采用原生態的sql語句進行寫入操作的時候,要用execute,讀操作要用query,切記,否則亂掉了。
 


免責聲明!

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



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