PHP代碼實現MySQL讀寫分離


關於MySQL的讀寫分離有幾種方法:中間件,Mysql驅動層,代碼控制

關於中間件和Mysql驅動層實現Mysql讀寫分離的方法,今天暫不做研究,

這里主要寫一點簡單的代碼來實現由PHP代碼控制MySQL的讀寫分離。

 

准備工作:兩個Mysql服務器,已經配置好主從,如果沒配置過Mysql主從,請參考我上一篇博文:《mysql實現主從復制》

       主服務器192.168.1.101;  

       從服務器:192.168.1.105;

 

思路就是封裝一個類,用於對數據庫的操作,

這里只是寫出一個簡單的demo,用於理解php控制讀寫分離的思想,僅作拋磚引玉只用。

 

class Db
{
    function __construct($sql)
    {
        $querystr = trim($sql);
        $querystr = substr($sql,0,6);
        //如果是查詢語句就連接從服務器
        if($querystr == 'select')
        {
            $conn = mysql_connect('192.168.1.105:3306','root','111111');
            mysql_select_db('test');
            mysql_query('set names utf8');

            $data = array();
            $res = mysql_query($sql);
            while ($row = mysql_fetch_assoc($res)) {
                $data[] = $row;
            }

            print_r($data);
            echo '<br/>';
            echo mysql_get_host_info($conn).'||'.mysql_get_server_info($conn).'||'.mysql_get_proto_info($conn);
        }
        //如果不是查詢語句就連接主服務器
        else
        {
            $conn = mysql_connect('192.168.1.101:3306','root','111111');
            mysql_select_db('test');
            mysql_query('set names utf8');

            mysql_query($sql);
            echo mysql_affected_rows();
            echo '<br/>';
            echo mysql_get_host_info($conn).'||'.mysql_get_server_info($conn).'||'.mysql_get_proto_info($conn);
        }
    }
}

$sql1 = "select * from a";
$sql2 = "insert into a (name) values ('Alice')";
$sql3 = "delete from a where id=5";
$sql4 = "update a set name='Jerry' where id=4";

//$model1 = new Db($sql1);
//$model2 = new Db($sql2);
//$model3 = new Db($sql3);
$model4 = new Db($sql4);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM