Le contenu de cet article concerne PHP+MYSQL réalisant la séparation en lecture et en écriture. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent également se référer au contenu de cet article
1 Introduction
. Écrit avant 2 articles respectivement :
Le principe de la synchronisation maître-esclave Mysql
Combat pratique de la synchronisation maître-esclave Mysql
Sur cette base, nous implémenterons un simple PHP+Mysql Séparation lecture-écriture pour améliorer la capacité de charge de la base de données.
2. Pratique du code
<?php class Db { private $res; function __construct($sql) { $querystr = strtolower(trim(substr($sql,0,6))); //如果是select,就连接slave服务器 if($querystr == 'select') { $res=$this->slave_select($sql); $this->res=$res; } //如果不是select,就连接master服务器 else { $res=$this->master_change($sql); $this->res=$res; } } /** * slave从库返回sql查询结果 * @param $sql * @return array */ private function slave_select($sql){ //该处只是随机获取slave节点的ip,当然,还可以采用其他算法获取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主库返回sql执行结果 * @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); } /** * 随机获取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]; } /** * 获取结果 * @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());
Recommandations associées :
Pratique du mode proxy et séparation de la lecture et de l'écriture dans la conception PHP idées
Comment réaliser la séparation de la lecture et de l'écriture de la base de données dans Phalapi
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!