關于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,,);
//如果是查詢語句就連接配接從伺服器
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);
轉自:http://www.cnblogs.com/superfat/p/5267479.html