使用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实现多服务器共享SESSION数据的方法
Mar 16 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
thinkPHP模板算术运算相关函数用法分析
Jul 12 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
Sep 22 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
php实现微信支付之现金红包
May 30 PHP
PHP基本语法
Mar 31 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
使用Apache的rewrite技术
2006/06/22 PHP
多文件上传的例子
2006/10/09 PHP
cache_lite试用
2007/02/14 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
JavaScript中的闭包
2016/02/24 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Python常见工厂函数用法示例
2018/03/21 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
网络安全类面试题
2015/08/01 面试题
奖学金自我鉴定范文
2013/10/03 职场文书
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
会计工作决心书
2014/03/11 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
太行山上观后感
2015/06/05 职场文书
正规欠条模板
2015/07/03 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android