ThinkPHP提供了完善的读写分离功能,不需要手动切换数据库。什么时候读,什么时候写系统会自动判断。读数据时系统会操作从服务器,而写数据时系统会操作主服务器。最终由数据库实现同步,这就是一个最典型的数据库读写分离,下以将配置好的两台主从数据库为例,详细介绍实现读写分离。

首先打开项目下的数据库配置文件,修改其中的数据库连接参数。要实现多数据库连接,只需要使用","分隔多台服务器即可,如以下代码所示。

<?php
    return array(
     //'配置项'=>'配置值'
     'URL_CASE INSENSITIVE' =>true,
     "DB_DEPLOY_TYPE"=>1, //是否启用分布式
     'DB_RW_SEPARATE'=>true, //是否启用智能读写分离
     'DB_TYPE' => 'mysql', //数据库类型
     'DB_HOST' => '192.168.2.1,192.168.2.10', //服务器地址
     'DB_NAME' => 'tp', //数据库名
     'DB_USER' => 'root,root', //用户名
     'DB_PWD' => 'root , root', //密码
     'DB_PREFIX' => 'tpk_', //数据库表前缀
     "project_name"=>"项目名称",
     'TMPL_L_DELIM' => '<!--{',
     'TMPL_R_DELIM' => '}-->',
     'LAYOUT_ON'=>true,
    );
    ?>```
复制代码
配置文件配置好后,现在就可以在动作中测试读写分离了,如以下代码所示。

<?php class IndexAction extends Action { //查询 public function index(){ $articleObj=M("Article"); $rows=$articleObj->select(); dump($rows); } //写入 public function add() { $articleObj=M("Article"); $data["title"]="读写分离测试"i $data["add_user"]="ceiba"; $data["area"]="shanghai"; $data["category"]=" 教育新闻"; $data["content"]="读写分离测试---内容"; if ($articleObj->add($data)) { $this->success("数据添加成功") ; }else { $this->error("数据添加失败"); } } } ?>