PHP+MYSQL实现读写分离简单实战
1、Introduction
之前写过2篇文章,分别是:
Mysql主从同步的原理
Myql主从同步实战
基于此,我们再实现简单的PHP+Mysql读写分离,从而提高数据库的负载能力。
2、代码实战
slave_select($sql); $this->res=$res; } //如果不是select,就连接master服务器 else { $res=$this->master_change($sql); $this->res=$res; } } /** *slave从库返回sql查询结果 *@param$sql *@returnarray */ privatefunctionslave_select($sql){ //该处只是随机获取slave节点的ip,当然,还可以采用其他算法获取slave_ip $slave_server=$this->get_slave_ip(); $dsn="mysql:host=$slave_server;dbname=test"; $user='root'; $pass='123456'; $dbh=newPDO($dsn,$user,$pass); return$dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); } /**master主库返回sql执行结果 *@param$sql *@returnint */ privatefunctionmaster_change($sql){ $master_server='192.168.33.22'; $dsn="mysql:host=$master_server;dbname=test"; $user='root'; $pass='123456'; $dbh=newPDO($dsn,$user,$pass); return$dbh->exec($sql); } /** *随机获取slave-ip *@returnmixed */ privatefunctionget_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]; } /** *获取结果 *@returnint */ publicfunctionget_res(){ return$this->res; } } $sql1="select*fromt1"; $sql2="insertintot1(name)values('haha')"; $sql3="deletefromt1whereid=1"; $sql4="updatet1setname='Jerry'whereid=2"; $db=newDb($sql1); //$db=newDb($sql2); //$db=newDb($sql3); //$db=newDb($sql4); var_dump($db->get_res());
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。