使用Yii2实现主从数据库设置


Posted in PHP onNovember 20, 2016

前言

MySQL主从同步是目前使用比较广泛的数据库架构,技术比较成熟,配置也不复杂,特别是对于负载比较大的网站,主从同步能够有效缓解数据库读写的压力。以前在使用yii1的时候,主从数据库的支持没有那么方便,只能写上多个DB的components,然后在AR的getDB中返回相应的db。这样也可以用来对付主从数据库

实现方法

Yii2则已经解决这个问题,直接在代码中进行处理即可:

PHP代码

'db' =>[ 
   'class' => 'yii\db\Connection', 
 
  // 配置主服务器 
  'dsn' => 'dsn for master server', 
  'username' => 'master', 
  'password' => '', 
  'charset' => 'utf8', 
  'tablePrefix' => 'php_',//默认为空 
 
  // 配置从服务器 
  'slaveConfig' => [ 
    'username' => 'slave', 
    'password' => '', 
    'charset' => 'utf8', 
   'tablePrefix' => 'php_', 
    'attributes' => [ 
      // use a smaller connection timeout 
      PDO::ATTR_TIMEOUT => 10, 
    ], 
   
  ], 
];

是不是感觉超级方便,而不止是这样,你还可以配置从服务器组:

PHP代码

'db'=>[ 
  //...上面是一些标准配置 
  'slaves' => [ 
    ['dsn' => 'dsn for slave server 1'], 
    ['dsn' => 'dsn for slave server 2'], 
    ['dsn' => 'dsn for slave server 3'], 
    ['dsn' => 'dsn for slave server 4'], 
  ],  
]

更值得称赞的是,主服务器也是多个主服务器的配置就是下面这样,其中字符编码集,表前缀等设置参考上面的。

PHP代码

'db'=>[ 
  // 配置主服务器 
  'masterConfig' => [ 
    'username' => 'master', 
    'password' => '', 
    'attributes' => [ 
      // use a smaller connection timeout 
      PDO::ATTR_TIMEOUT => 10, 
    ], 
  ], 
 
  // 配置主服务器组 
  'masters' => [ 
    ['dsn' => 'dsn for master server 1'], 
    ['dsn' => 'dsn for master server 2'], 
  ], 
  //other ...slaves 
];

果然 是轻轻松松啊。

当然 如果你想更轻松的使用,这些,其实就是得用YII2的AR。你就用不着改代码了。。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
php+dbfile开发小型留言本
Oct 09 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
May 02 PHP
ini_set的用法介绍
Jan 07 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
WordPress中对访客评论功能的一些优化方法
Nov 24 PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
Dec 18 PHP
php 二维数组时间排序实现代码
Nov 19 #PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 #PHP
php socket通信简单实现
Nov 18 #PHP
php微信开发之自定义菜单实现
Nov 18 #PHP
php微信开发之百度天气预报
Nov 18 #PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 #PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 #PHP
You might like
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php时间函数用法分析
2016/05/28 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
简单实现python爬虫功能
2015/12/31 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
浅谈flask源码之请求过程
2018/07/26 Python
python+opencv实现阈值分割
2018/12/26 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
sklearn+python:线性回归案例
2020/02/24 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
python 实现IP子网计算
2021/02/18 Python
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
士力架广告词
2014/03/20 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
英语感谢信范文
2015/01/20 职场文书
六一儿童节开幕词
2015/01/29 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
i7 6700处理器相当于i5几代
2022/04/19 数码科技
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python