使用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 相关文章推荐
实现了一个PHP5的getter/setter基类的代码
Feb 25 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
php去除字符串换行符示例分享
Feb 13 PHP
ThinkPHP多表联合查询的常用方法
Mar 24 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
php操纵mysqli数据库的实现方法
Sep 18 PHP
php array_key_exists() 与 isset() 的区别
Oct 24 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
laravel 多图上传及图片的存储例子
Oct 14 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
56.com视频采集接口程序(PHP)
2007/09/22 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
php目录拷贝实现方法
2015/07/10 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
JavaScript简单实现动态改变HTML内容的方法示例
2018/12/25 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
会计助理的岗位职责
2013/11/29 职场文书
机关财务管理制度
2014/01/17 职场文书
生产部管理制度
2014/01/31 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
我爱读书演讲稿
2014/05/07 职场文书
公司委托书范本5篇
2014/09/20 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
小爸爸观后感
2015/06/15 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
python 对图片进行简单的处理
2021/06/23 Python