使用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 相关文章推荐
常用表单验证类,有了这个,一般的验证就都齐了。
Dec 06 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
php时区转换转换函数
Jan 07 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
ThinkPHP模板替换与系统常量及应用实例教程
Aug 22 PHP
简单分析ucenter 会员同步登录通信原理
Aug 25 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
PDO::getAttribute讲解
Jan 28 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
Jsonp劫持学习
Apr 01 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去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
python的类方法和静态方法
2014/12/13 Python
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python机器学习之决策树算法
2017/12/22 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
浅析Python requests 模块
2020/10/09 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
行政管理专业推荐信
2013/11/02 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
优秀干部获奖感言
2014/01/31 职场文书
优秀教师获奖感言
2014/01/31 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python
总结Python使用过程中的bug
2021/06/18 Python
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技