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

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()函數,用來獲取和設置配置文件的配置項,在模塊中讀取,並分配到模板中

相關文章
相關標籤/搜索