PHP+MYSQL实现读写分离简单实战
发布时间 - 2026-01-11 00:09:06 点击率:次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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Python正则表达式进阶教程_复杂匹配与分组替换解析
Python高阶函数应用_函数作为参数说明【指导】
如何快速搭建安全的FTP站点?
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
如何在宝塔面板中修改默认建站目录?
Laravel如何使用Service Container和依赖注入?(代码示例)
如何快速搭建自助建站会员专属系统?
非常酷的网站设计制作软件,酷培ai教育官方网站?
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
香港服务器租用费用高吗?如何避免常见误区?
Laravel如何配置任务调度?(Cron Job示例)
如何在IIS管理器中快速创建并配置网站?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
Laravel如何使用模型观察者?(Observer代码示例)
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
Linux系统命令中tree命令详解
如何在阿里云服务器自主搭建网站?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Laravel Docker环境搭建教程_Laravel Sail使用指南
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
微信推文制作网站有哪些,怎么做微信推文,急?
如何在阿里云虚拟服务器快速搭建网站?
敲碗10年!Mac系列传将迎来「触控与联网」双革新
php 三元运算符实例详细介绍
WEB开发之注册页面验证码倒计时代码的实现
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
在线制作视频网站免费,都有哪些好的动漫网站?
Laravel storage目录权限问题_Laravel文件写入权限设置
焦点电影公司作品,电影焦点结局是什么?
Android 常见的图片加载框架详细介绍
北京网站制作的公司有哪些,北京白云观官方网站?
高防服务器租用指南:配置选择与快速部署攻略
如何安全更换建站之星模板并保留数据?
java获取注册ip实例
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
Laravel如何处理表单验证?(Requests代码示例)
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
如何在阿里云部署织梦网站?
微信公众帐号开发教程之图文消息全攻略
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】

