1、Introduction

之前写过2篇文章,分别是:
Mysql主从同步的原理
Myql主从同步实战
基于此,我们再实现简单的PHP+Mysql读写分离,从而提高数据库的负载能力。
2、代码实战
<?php
class Db
{
private $res;
function __construct($sql)
{
$querystr = strtolower(trim(substr($sql,0,6)));
//如果是select,就连接slave服务器
if($querystr == 'select')
{
$res=$this->slave_select($sql);
$this->res=$res;
}
//如果不是select,就连接master服务器
else
{
$res=$this->master_change($sql);
$this->res=$res;
}
}
/**
* slave从库返回sql查询结果
* @param $sql
* @return array
*/
private function slave_select($sql){
//该处只是随机获取slave节点的ip,当然,还可以采用其他算法获取slave_ip
$slave_server=$this->get_slave_ip();
$dsn="mysql:host=$slave_server;dbname=test";
$user='root';
$pass='123456';
$dbh=new PDO($dsn, $user, $pass);
return $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
}
/**master主库返回sql执行结果
* @param $sql
* @return int
*/
private function master_change($sql){
$master_server='192.168.33.22';
$dsn="mysql:host=$master_server;dbname=test";
$user='root';
$pass='123456';
$dbh=new PDO($dsn, $user, $pass);
return $dbh->exec($sql);
}
/**
* 随机获取slave-ip
* @return mixed
*/
private function get_slave_ip(){
$slave_ips=['192.168.33.33','192.168.33.44'];
$count=count($slave_ips)-1;
$random_key=mt_rand(0,$count);
return $slave_ips[$random_key];
}
/**
* 获取结果
* @return int
*/
public function get_res(){
return $this->res;
}
}
$sql1 = "select * from t1";
$sql2 = "insert into t1 (name) values ('haha')";
$sql3 = "delete from t1 where id=1";
$sql4 = "update t1 set name='Jerry' where id=2";
$db = new Db($sql1);
//$db = new Db($sql2);
//$db = new Db($sql3);
//$db = new Db($sql4);
var_dump($db->get_res());
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# PHP
# mysql
# 读写分离
# php实现mysql读写分离
# Springboot + Mysql8实现读写分离功能
# springboot基于Mybatis mysql实现读写分离
# 基于mysql+mycat搭建稳定高可用集群负载均衡主备复制读写分离操作
# PHP实现的mysql读写分离操作示例
# mysql主从复制读写分离的配置方法详解
# 利用mycat实现mysql数据库读写分离的示例
# Mysql读写分离过期常用解决方案
# 还可以
# 如果不是
# 查询结果
# 写过
# 大家多多
# gt
# slave
# dsn
# slave_select
# trim
# strtolower
# select
# substr
# master
# ip
# array
# slave_ip
# slave_server
# get_slave_ip
# master_change
相关文章:
大学网站设计制作软件有哪些,如何将网站制作成自己app?
建站之家VIP精选网站模板与SEO优化教程整合指南
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何选择域名并搭建高效网站?
建站之星如何实现PC+手机+微信网站五合一建站?
建站之星免费版是否永久可用?
如何快速重置建站主机并恢复默认配置?
如何在搬瓦工VPS快速搭建网站?
测试制作网站有哪些,测试性取向的权威测试或者网站?
建站之星安装需要哪些步骤及注意事项?
高端云建站费用究竟需要多少预算?
如何在橙子建站中快速调整背景颜色?
北京企业网站设计制作公司,北京铁路集团官方网站?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何在阿里云虚拟服务器快速搭建网站?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
C#如何使用XPathNavigator高效查询XML
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
济南专业网站制作公司,济南信息工程学校怎么样?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
网站制作壁纸教程视频,电脑壁纸网站?
C#怎么创建控制台应用 C# Console App项目创建方法
如何用虚拟主机快速搭建网站?详细步骤解析
如何注册花生壳免费域名并搭建个人网站?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
微信小程序 五星评分(包括半颗星评分)实例代码
微信小程序制作网站有哪些,微信小程序需要做网站吗?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星伪静态规则如何设置?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
建站主机是否等同于虚拟主机?
如何用免费手机建站系统零基础打造专业网站?
详解jQuery停止动画——stop()方法的使用
制作宣传网站的软件,小红书可以宣传网站吗?
如何在万网ECS上快速搭建专属网站?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何使用Golang安装API文档生成工具_快速生成接口文档
大连 网站制作,大连天途有线官网?
如何批量查询域名的建站时间记录?
Swift中switch语句区间和元组模式匹配
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
如何配置支付宝与微信支付功能?
已有域名和空间如何快速搭建网站?
建站之星微信建站一键生成小程序+多端营销系统
*请认真填写需求信息,我们会在24小时内与您取得联系。