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
相关文章:
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
网站微信制作软件,如何制作微信链接?
建站ABC备案流程中有哪些关键注意事项?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
建站之星Pro快速搭建教程:模板选择与功能配置指南
建站之星如何助力网站排名飙升?揭秘高效技巧
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
建站主机SSH密钥生成步骤及常见问题解答?
如何撰写建站申请书?关键要点有哪些?
如何选择网络建站服务器?高效建站必看指南
香港服务器租用每月最低只需15元?
官网网站制作腾讯审核要多久,联想路由器newifi官网
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
郑州企业网站制作公司,郑州招聘网站有哪些?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
怎么将XML数据可视化 D3.js加载XML
外贸公司网站制作哪家好,maersk船公司官网?
家具网站制作软件,家具厂怎么跑业务?
如何快速使用云服务器搭建个人网站?
网站制作新手教程,新手建设一个网站需要注意些什么?
如何确保西部建站助手FTP传输的安全性?
建站VPS推荐:2025年高性能服务器配置指南
建站之星安装后如何自定义网站颜色与字体?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
c# 在ASP.NET Core中管理和取消后台任务
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
高防服务器租用指南:配置选择与快速部署攻略
装修招标网站设计制作流程,装修招标流程?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
建站之星2.7模板快速切换与批量管理功能操作指南
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何快速生成可下载的建站源码工具?
建站之星客服服务时间及联系方式如何?
实现虚拟支付需哪些建站技术支撑?
建站之星安装提示数据库无法连接如何解决?
制作农业网站的软件,比较好的农业网站推荐一下?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
,柠檬视频怎样兑换vip?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
电脑免费海报制作网站推荐,招聘海报哪个网站多?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
海南网站制作公司有哪些,海口网是哪家的?
公司网站设计制作厂家,怎么创建自己的一个网站?
建站主机CVM配置优化、SEO策略与性能提升指南
建站之星如何优化SEO以实现高效排名?
公司门户网站制作流程,华为官网怎么做?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
*请认真填写需求信息,我们会在24小时内与您取得联系。