ThinkPHP教程_PHP框架之ThinkPHP(五)【連接數據庫與主從數據庫設置】


一、連接數據庫

  ThinkPHP內置了抽象數據庫訪問層,把不同的數據庫操作封裝起來,只需要使用公共的Db類(系統目錄->Lib目錄->Think目錄->Db目錄->Db.class.php)進行操作,而無需針對不同的數據庫寫不同的代碼和底層實現,Db類會自動調用相應的數據庫適配器(系統目錄->Lib目錄->Think目錄->Db目錄->Driver目錄下的各個數據適配文件),目前支持的數據庫類型如下

  

  ThinkPHP並不是一開始就會連接數據庫,而是在有數據庫操作時才會去連接數據庫

  在系統第一次操作模型的時候,ThinkPHP會自動連接數據庫獲取相關模型類的數據字段信息,並緩存下來,即數據庫表字段緩存

  1、配置數據庫連接信息(推薦方式)

  要想連接數據庫,必須配置正確的數據庫連接信息,而配置方式有多種

    ·項目配置文件中配置

    

    為了避免多個應用(Application)重復配置數據庫連接信息,可以將數據庫連接信息寫到公用的配置文件中去,比如說項目目錄->config.php文件(格式依然是按照訪問一個數組)中,然后在各個應用的配置文件中接收項目目錄->config.php文件中返回的數組,並與自己的配置文件中的其它配置數組合並(merge),最后返回

    

    

    

    

    注意,include同一級目錄下的文件要么這樣'./文件名'要么'文件名',但是不能'.文件名'

    在項目配置文件中配置數據庫連接信息是推薦方式,還可以在調試配置文件中配置數據庫連接信息,那么在調試模式下后者生效,部署模式下前者生效

  2、DSN方式

  通常用於在模塊中手動連接數據庫,或者用於創建多個數據庫連接

   

  3、DSN的數組方式

  也是通常用於在模塊中手動連接數據庫,或者用於創建多個數據庫連接

  

  4、模型(Model)中配置

  即在模型中定義一個成員屬性,該成員屬性是一個包含數據庫連接信息的數組字符串

  

  那么在實例化模型對象時,就會使用該數據庫連接信息去連接數據庫,通常用於連接其它數據庫

二、主從數據庫

  解決站點高負載、高並發的一種手段,因為從某種意義上說,站點的瓶頸落在了數據庫頭上

  ThinkPHP的數據庫模型支持主從數據庫的連接,在項目配置文件中設置'DB_DEPLOY_TYPE'=>1即可開啟主從數據庫支持

  

  注意,在所用的數據庫服務器端上也要進行數據庫集群(分布式數據庫)的設置

  做完以上兩點配置之后,就可以對數據庫連接信息進行配置了,因為是連接主從數據庫,所以數據庫連接信息有些注意點

  1、主從數據庫類型必須相同,即不能一個MySQL,一個Oracle  

  2、連接的數據庫個數取決於DB_HOST定義的數量,所以即使是兩個相同的IP也需要重復定義,但是其他的參數如果存在相同的可以不用重復定義

  3、在未進行讀寫分離時,ThinkPHP會在讀/寫操作時,自動的去找主從服務器中的任意一台

  4、讀寫分離,在實際開發中,是必須要進行讀寫分離的,因為一般來說,讀操作要比寫操作多得多

    ·配置:在項目配置文件中設置'DB_RW_SEPARATE'=>true即可開啟

    ·機制:一台主服務器,多台從服務器,主服務器是寫服務器所有從服務器是讀服務器

  5、主從數據庫數據信息同步不是ThinkPHP的事,是數據庫本身的事

  6、字符集默認為utf8,注意,切記不要寫成utf-8!

  ThinkPHP的C()函數,用來獲取和設置配置文件的配置項,在模塊中讀取,並分配到模板中


免責聲明!

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



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