1、鏈接數據庫php
ThinkPHP內置了抽象數據庫訪問層,把不一樣的數據庫操做封裝起來,只須要使用公共的Db類(系統目錄->Lib目錄->Think目錄->Db目錄->Db.class.php)進行操做,而無需針對不一樣的數據庫寫不一樣的代碼和底層實現,Db類會自動調用相應的數據庫適配器(系統目錄->Lib目錄->Think目錄->Db目錄->Driver目錄下的各個數據適配文件),目前支持的數據庫類型以下數據庫
ThinkPHP並非一開始就會鏈接數據庫,而是在有數據庫操做時纔會去鏈接數據庫數組
在系統第一次操做模型的時候,ThinkPHP會自動鏈接數據庫獲取相關模型類的數據字段信息,並緩存下來,即數據庫表字段緩存緩存
一、配置數據庫鏈接信息(推薦方式)服務器
要想鏈接數據庫,必須配置正確的數據庫鏈接信息,而配置方式有多種併發
·項目配置文件中配置分佈式
爲了不多個應用(Application)重複配置數據庫鏈接信息,能夠將數據庫鏈接信息寫到公用的配置文件中去,好比說項目目錄->config.php文件(格式依然是按照訪問一個數組)中,而後在各個應用的配置文件中去接收項目目錄->config.php文件中返回的數組,並與本身的配置文件中的其它配置數組合並(merge),最後返回函數
注意,include同一級目錄下的文件要麼這樣'./文件名',要麼'文件名',可是不能'.文件名'高併發
在項目配置文件中配置數據庫鏈接信息是推薦方式,還能夠在調試配置文件中配置數據庫鏈接信息,那麼在調試模式下後者生效,部署模式下前者生效spa
二、DSN方式
一般用於在模塊中手動鏈接數據庫,或者用於建立多個數據庫鏈接
三、DSN的數組方式
也是一般用於在模塊中手動鏈接數據庫,或者用於建立多個數據庫鏈接
四、模型(Model)中配置
即在模型中定義一個成員屬性,該成員屬性是一個包含數據庫鏈接信息的數組或字符串
那麼在實例化模型對象時,就會使用該數據庫鏈接信息去鏈接數據庫,一般用於鏈接其它數據庫
2、主從數據庫
解決站點高負載、高併發的一種手段,由於從某種意義上說,站點的瓶頸落在了數據庫頭上
ThinkPHP的數據庫模型支持主從數據庫的鏈接,在項目配置文件中設置'DB_DEPLOY_TYPE'=>1便可開啓主從數據庫支持
注意,在所用的數據庫服務器端上也要進行數據庫集羣(分佈式數據庫)的設置
作完以上兩點配置以後,就能夠對數據庫鏈接信息進行配置了,由於是鏈接主從數據庫,因此數據庫鏈接信息有些注意點
一、主從數據庫類型必須相同,即不能一個MySQL,一個Oracle
二、鏈接的數據庫個數取決於DB_HOST定義的數量,因此即便是兩個相同的IP也須要重複定義,可是其餘的參數若是存在相同的能夠不用重複定義
三、在未進行讀寫分離時,ThinkPHP會在讀/寫操做時,自動的去找主從服務器中的任意一臺
四、讀寫分離,在實際開發中,是必需要進行讀寫分離的,由於通常來講,讀操做要比寫操做多得多
·配置:在項目配置文件中設置'DB_RW_SEPARATE'=>true便可開啓
·機制:一臺主服務器,多臺從服務器,主服務器是寫服務器,全部從服務器是讀服務器
五、主從數據庫數據信息同步不是ThinkPHP的事,是數據庫自己的事
六、字符集默認爲utf8,注意,切記不要寫成utf-8!
ThinkPHP的C()函數,用來獲取和設置配置文件的配置項,在模塊中讀取,並分配到模板中