全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

PHP+MYSQL实现读写分离简单实战

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小时内与您取得联系。