ThinkPHP实现读写分离(1)
发布时间:2015-12-17 14:20:28编辑:丝画阁阅读(788)
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("数据添加失败");
-
}
-
}
-
}
-
?>