ThinkPHP实现读写分离(1)

发布时间:2015-12-17 14:20:28编辑:丝画阁阅读(784)

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

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

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

  1. <?php
  2.     class IndexAction extends Action {
  3.      //查询
  4.      public function index(){
  5.      $articleObj=M("Article");
  6.      $rows=$articleObj->select();
  7.      dump($rows);
  8.      }
  9.      //写入
  10.      public function add() {
  11.       $articleObj=M("Article");
  12.       $data["title"]="读写分离测试"i
  13.       $data["add_user"]="ceiba";
  14.       $data["area"]="shanghai";
  15.       $data["category"]=" 教育新闻";
  16.       $data["content"]="读写分离测试---内容";
  17.       if ($articleObj->add($data)) {
  18.        $this->success("数据添加成功") ;
  19.       }else {
  20.        $this->error("数据添加失败");
  21.       }
  22.      }
  23.     }
  24.     ?>

关键字