欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP+MYSQL實(shí)現(xiàn)讀寫(xiě)分離簡(jiǎn)單實(shí)戰(zhàn)

 更新時(shí)間:2017年03月13日 15:29:48   作者:zilu  
本篇文章主要介紹了PHP+MYSQL實(shí)現(xiàn)讀寫(xiě)分離,實(shí)例分析了讀寫(xiě)分離的技巧,從而提高數(shù)據(jù)庫(kù)的負(fù)載能力,具有一定的參考價(jià)值,有興趣的可以了解一下。

1、Introduction

之前寫(xiě)過(guò)2篇文章,分別是:

Mysql主從同步的原理 

Myql主從同步實(shí)戰(zhàn) 

基于此,我們?cè)賹?shí)現(xiàn)簡(jiǎn)單的PHP+Mysql讀寫(xiě)分離,從而提高數(shù)據(jù)庫(kù)的負(fù)載能力。

2、代碼實(shí)戰(zhàn)

<?php
class Db
{
  private $res;
  function __construct($sql)
  {
    $querystr = strtolower(trim(substr($sql,0,6)));
    //如果是select,就連接slave服務(wù)器
    if($querystr == 'select')
    {
      $res=$this->slave_select($sql);
      $this->res=$res;
    }
    //如果不是select,就連接master服務(wù)器
    else
    {
      $res=$this->master_change($sql);
      $this->res=$res;
    }
  }

  /**
   * slave從庫(kù)返回sql查詢(xún)結(jié)果
   * @param $sql
   * @return array
   */
  private function slave_select($sql){
    //該處只是隨機(jī)獲取slave節(jié)點(diǎn)的ip,當(dāng)然,還可以采用其他算法獲取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主庫(kù)返回sql執(zhí)行結(jié)果
   * @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);
  }

  /**
   * 隨機(jī)獲取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];
  }

  /**       
   * 獲取結(jié)果
   * @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());

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論