全网整合营销服务商

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

免费咨询热线: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 


相关文章: 大学网站设计制作软件有哪些,如何将网站制作成自己app?  建站之家VIP精选网站模板与SEO优化教程整合指南  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何选择域名并搭建高效网站?  建站之星如何实现PC+手机+微信网站五合一建站?  建站之星免费版是否永久可用?  如何快速重置建站主机并恢复默认配置?  如何在搬瓦工VPS快速搭建网站?  测试制作网站有哪些,测试性取向的权威测试或者网站?  建站之星安装需要哪些步骤及注意事项?  高端云建站费用究竟需要多少预算?  如何在橙子建站中快速调整背景颜色?  北京企业网站设计制作公司,北京铁路集团官方网站?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  如何在阿里云虚拟服务器快速搭建网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  C#如何使用XPathNavigator高效查询XML  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  济南专业网站制作公司,济南信息工程学校怎么样?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  网站制作壁纸教程视频,电脑壁纸网站?  C#怎么创建控制台应用 C# Console App项目创建方法  如何用虚拟主机快速搭建网站?详细步骤解析  如何注册花生壳免费域名并搭建个人网站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  微信小程序 五星评分(包括半颗星评分)实例代码  微信小程序制作网站有哪些,微信小程序需要做网站吗?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星伪静态规则如何设置?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  建站主机是否等同于虚拟主机?  如何用免费手机建站系统零基础打造专业网站?  详解jQuery停止动画——stop()方法的使用  制作宣传网站的软件,小红书可以宣传网站吗?  如何在万网ECS上快速搭建专属网站?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何使用Golang安装API文档生成工具_快速生成接口文档  大连 网站制作,大连天途有线官网?  如何批量查询域名的建站时间记录?  Swift中switch语句区间和元组模式匹配  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何配置支付宝与微信支付功能?  已有域名和空间如何快速搭建网站?  建站之星微信建站一键生成小程序+多端营销系统 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。