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("数据添加失败"); } } } ?>