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()函数,用来获取和设置配置文件的配置项,在模块中读取,并分配到模板中