知识大全 PHP实现的MySQL读写分离

Posted 数据库

篇首语:愿君学长松,慎勿作桃李。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 PHP实现的MySQL读写分离相关的知识,希望对你有一定的参考价值。

PHP实现的MySQL读写分离  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  主要特性

  简单的读写分离   一个主数据库 可以添加更多的只读数据库   读写分离但不用担心某些特性不支持   缺点 同时连接两个数据库   英文比较烂 也写几个字吧

php code for mysql read/write splitfeature:simply rw split one master can add more slaves support all mysql feature link to the master and slave at the same time

  PHP代码

mysql_rw_php class php

<?php/******************************************* mysql rw php version @ *** code by hqlulu#gmail *** // aslibra *** //code google /p/mysql rw php/*** code modify from class_mysql php (uchome)****************************************/class mysql_rw_php   //查询个数  var $querynum = ;  //当前操作的数据库连接  var $link = null;  //字符集  var $charset;  //当前数据库  var $cur_db = ;  //是否存在有效的只读数据库连接  var $ro_exist = false;  //只读数据库连接  var $link_ro = null;  //读写数据库连接  var $link_rw = null;  function mysql_rw_php()    function connect($dbhost $dbuser $dbpw $dbname = $pconnect = $halt = TRUE)     if($pconnect)       if(!$this >link = @mysql_pconnect($dbhost $dbuser $dbpw))         $halt && $this >halt( Can not connect to MySQL server );          else       if(!$this >link = @mysql_connect($dbhost $dbuser $dbpw))         $halt && $this >halt( Can not connect to MySQL server );                  //只读连接失败    if(!$this >link && !$halt) return false;        //未初始化rw时 第一个连接作为rw    if($this >link_rw == null)      $this >link_rw = $this >link;    if($this >version() > )       if($this >charset)         @mysql_query( SET character_set_connection=$this >charset character_set_results=$this >charset character_set_client=binary $this >link);            if($this >version() > )         @mysql_query( SET sql_mode= $this >link);              if($dbname)       $this >select_db($dbname);        //连接一个只读的mysql数据库  function connect_ro($dbhost $dbuser $dbpw $dbname = $pconnect = )    if($this >link_rw == null)      $this >link_rw = $this >link;    $this >link = null;    //不产生halt错误    $this >connect($dbhost $dbuser $dbpw $dbname $pconnect false);    if($this >link)      //连接成功      //echo link ro sussess!<br> ;      $this >ro_exist = true;      $this >link_ro = $this >link;      if($this >cur_db)        //如果已经选择过数据库则需要操作一次        @mysql_select_db($this >cur_db $this >link_ro);          else      //连接失败      //echo link ro failed!<br> ;      $this >link = &$this >link_rw;        //设置一系列只读数据库并且连接其中一个  function set_ro_list($ro_list)    if(is_array($ro_list))      //随机选择其中一个      $link_ro = $ro_list[array_rand($ro_list)];      $this >connect_ro($link_ro[ dbhost ] $link_ro[ dbuser ] $link_ro[ dbpw ]);        function select_db($dbname)     //同时操作两个数据库连接    $this >cur_db = $dbname;    if($this >ro_exist)      @mysql_select_db($dbname $this >link_ro);        return @mysql_select_db($dbname $this >link_rw);    function fetch_array($query $result_type = MYSQL_ASSOC)     return mysql_fetch_array($query $result_type);    function fetch_one_array($sql $type = )     $qr = $this >query($sql $type);    return $this >fetch_array($qr);    function query($sql $type = )     $this >link = &$this >link_rw;    //判断是否select语句    if($this >ro_exist && preg_match ( /^(\\s*)select/i $sql))      $this >link = &$this >link_ro;        $func = $type == UNBUFFERED && @function_exists( mysql_unbuffered_query ) ?      mysql_unbuffered_query : mysql_query ;    if(!($query = $func($sql $this >link)) && $type != SILENT )       $this >halt( MySQL Query Error $sql);        $this >querynum++;    return $query;    function affected_rows()     return mysql_affected_rows($this >link);    function error()     return (($this >link) ? mysql_error($this >link) : mysql_error());    function errno()     return intval(($this >link) ? mysql_errno($this >link) : mysql_errno());    function result($query $row)     $query = @mysql_result($query $row);    return $query;    function num_rows($query)     $query = mysql_num_rows($query);    return $query;    function num_fields($query)     return mysql_num_fields($query);    function free_result($query)     return mysql_free_result($query);    function insert_id()     return ($id = mysql_insert_id($this >link)) >= ? $id : $this >result($this >query( SELECT last_insert_id() ) );    function fetch_row($query)     $query = mysql_fetch_row($query);    return $query;    function fetch_fields($query)     return mysql_fetch_field($query);    function version()     return mysql_get_server_info($this >link);    function close()     return mysql_close($this >link);    function halt($message = $sql = )     $dberror = $this >error();    $dberrno = $this >errno();    echo <div style=\\ position:absolute;font size: px;font family:verdana arial;background:#EBEBEB;padding: em;\\ >        <b>MySQL Error</b><br>        <b>Message</b>: $message<br>        <b>SQL</b>: $sql<br>        <b>Error</b>: $dberror<br>        <b>Errno </b>: $dberrno<br>        </div> ;    exit();  ?>

  example php

cha138/Article/program/PHP/201311/21488

相关参考

知识大全 MySql配置主从复制读写分离

MySql配置主从复制读写分离  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  myini配置文件

知识大全 PHP读写XML文件技巧

PHP读写XML文件技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  常用如下几行  head

知识大全 初学入门 PHP 和 MySQL

初学入门PHP和MySQL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我想要使用要使用PHP

知识大全 PHP调用MySQL的存储过程

PHP调用MySQL的存储过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  MySQL好像从开

知识大全 php 对 mysql数据库的增,删,该,查

  php对mysql数据库的增删该查  $dbhost=localhost;  $dbuser=admin;  $dbpass=;  $dbname=lch;  $conn=mysql_connec

知识大全 10条PHP中用的mysql语句

10条PHP中用的mysql语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinzh

知识大全 用MySQL和PHP创建XML

用MySQL和PHP创建XML  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  XML是作为数据交

知识大全 编译APACHE+PHP+MYSQL的一个脚本

编译APACHE+PHP+MYSQL的一个脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  源

知识大全 解决PHP无法访问远程mysql的问题

解决PHP无法访问远程mysql的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  说明远程服

知识大全 PHP 和 MySQL 开发的 8 个技巧

PHP和MySQL开发的8个技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  LAMP架构的网