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