PHP访问数据库集群的方法小结


Posted in PHP onMarch 14, 2016

本文总结分析了PHP访问数据库集群的方法。分享给大家供大家参考,具体如下:

一般常见的有三种做法:

1、自动判断sql是否为读,来选择数据库的连接:

实例化php DB类的时候,需要一次连接两台服务器,然后根据slq选择不同的连接,举个例子:

$link_w = mysql_connect($w_host,$user,$pwd);
$link_r = mysql_connect($r_host,$user,$pwd);
//执行sql
if(preg_match("/^select/i", trim($sql))) {
  mysql_query($sql,$link_r);
}else {
  mysql_query($sql,$link_w);
}

这个方法的优点就是开发者执行sql不用区分读或者写,在db类的底层自己判断,缺点是,往往只需要读或者写时也需要打开两个连接。

2、调用的时候自己选择:

当执行sql前一般是能确定是写还是读,所以开发者需要手动的调用不同的连接,举个例子:

$w_db = new DB('w');
$w_db -> query('insert into .....');

当sql为读:

$r_db = new DB('r');
$r_db -> query('select .....');

主要通过,传的参数来区别sql是读还是写,每次调用sql前需要调用开发者自己判断。

3、使用MySQL Proxy做中间层代理,会自动将判断sql是读或者写,将请求转发给服务器。优点是程序不用更改任何代码,只要启动mysql proxy 时分别指定读或写的服务器:

--proxy-backend-addresses
--proxy-read-only-backend-addresses

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
CodeIgniter图像处理类的深入解析
Jun 17 PHP
关于Sphinx创建全文检索的索引介绍
Jun 25 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
Apr 30 PHP
php短址转换实现方法
Feb 25 PHP
php实现TCP端口检测的方法
Apr 01 PHP
PHP验证码生成原理和实现
Jan 24 PHP
详解js异步文件加载器
Jan 24 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
Laravel 框架返回状态拦截代码
Oct 18 PHP
PHP中关于php.ini参数优化详解
Feb 28 PHP
PHP代码覆盖率统计详解
Jul 22 PHP
php 无限级分类 获取顶级分类ID
Mar 13 #PHP
PHP实现文件上传与下载实例与总结
Mar 13 #PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 #PHP
PHP批量去除BOM头内容信息代码
Mar 11 #PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 #PHP
php实现无限级分类查询(递归、非递归)
Mar 10 #PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 #PHP
You might like
缓存技术详谈―php
2006/12/14 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
PHP中的替代语法简介
2014/08/22 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
vue实现设置载入动画和初始化页面动画效果
2019/10/28 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
详解Python3中的 input() 函数
2020/03/18 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
什么是python的函数体
2020/06/19 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
电视购物广告词
2014/03/19 职场文书
班主任评语大全
2014/04/26 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
村委会贫困证明范本
2014/09/17 职场文书
经典导游欢迎词
2015/01/26 职场文书
家长反馈意见及建议
2015/06/03 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书