首页 理论教育PHPMVC开发实战:完整指南

PHPMVC开发实战:完整指南

【摘要】:比如MySQL服务器集群,只是由于习惯性的问题,多数程序员都称为分布式数据库。分布式数据库的特点是多台数据库服务器轮流对外提供服务,并提供冗余、容灾等基本功能,确保操作不中断。下面以默认的MySQL驱动为例,详细介绍ThinkPHP连接分布式数据库的过程。

分布式数据库并不是指多个数据库,严格意义来说是指分布式数据库服务器,也称服务器集群。比如MySQL服务器集群,只是由于习惯性的问题,多数程序员都称为分布式数据库。分布式数据库的特点是多台数据库服务器轮流对外提供服务,并提供冗余、容灾等基本功能,确保操作不中断。衡量一个MVC框架能不能进行分布式数据库开发,首先需要看MVC中的连接对象能否智能并顺利地切换数据库服务器。默认情况下,一个连接对象只对一台数据库服务器生效。ThinkPHP提供完善的数据库连接驱动,并且能够同时支持多种类型数据库的分布式开发。默认情况下提供了MySQL分布式数据库开发驱动,如果读者使用的是其他数据库,需要自行到http://www.thinkphp.cn/extend/driver.html网址下载对应的驱动。下面以默认的MySQL驱动为例,详细介绍ThinkPHP连接分布式数据库的过程。

1.配置数据库

ThinkPHP简化了连接分布式数据库的步骤,开发人员不需要手动创建连接对象和释放连接对象,只需要在配置文件中增加数据库配置即可。这里假设在原有的MySQL数据库服务器的基础上再添加一台用于存放BBS论坛数据的MySQL服务器,ip地址为192.168.1.10。配置文件如以下代码所示。

如上述代码所示,新添加的数据库配置项命名为DB_con1,该名称是自定义的,切换数据库时需要使用到。如果需要添加更多集群数据库服务器,只需要按照格式填写即可。配置信息和连接方式根据驱动情况而有所不同,比例使用DNS连接方式,那么就必须按照DNS的方式配置。

这里需要注意的是,新增的数据库配置项名称必须为全小写,否则系统将不能正确识别(以ThinkPHP 3.0为例)。另外,新增加的数据库配置不支持配置数据表前缀。配置完成后,原先的数据库配置会被系统设为默认数据库,并分配编号0;而新增的DB_Con1数据库分配的编号为1,需要开发人员手动切换。(www.chuimin.cn)

2.使用数据库

分布式数据库配置完成后,接下来就可以直接使用了。假设bbs数据库中有一个数据表,并命名为comm_bbs,那么动态切换到该数据表是非常简单的,代码如下所示。

table方法是一个重要的方法,该方法用于指定数据表。前面已经讲述过新增加的数据库配置不支持配置表前缀,所以table方法必须传入带表前缀的数据表名称。但是如果新增加的数据库表前缀本来就和默认数据库的表前缀是一样的,那么table方法是可以省略的。如以下代码所示。

事实上分布式数据库多数都用在主从读写分离上的,这也就意味着所有数据库的表结构都相同,这种情况下就不需要table方法。针对数据库读写分离,ThinkPHP还专门提供了更加便捷的方式。