php实现MySQL读写分离

MySQL读写分离有好几种方式 MySQL中间件 MySQL驱动层 代码控制

关于 中间件 和 驱动层的方式这里不做深究  暂且简单介绍下 如何通过PHP代码来控制MySQL读写分离

我们都知道 “读” 在SQL语句里是 “SELECT”,  ”写” 是 “INSERT”

那么我们第一时间就应该想到 字符串截取 substr() 这个函数

首先我们通过substr()函数来获取到 sql语句的前6个字符是否为 “SELECT” 如果是我们连接读服务器进行处理 如果不是 我们连接写服务器进行处理

思路有了 那么就是代码了

1 $querystr = strtolower(trim(substr($sql,0,6))); //截取SQL语句字符串 2 3 //如果是select,就连接slave(从)服务器 4 if($querystr == 'select') 5 { 6   $slave_server='192.168.80.3::3306'; 7   $dsn="mysql:host=$slave_server;dbname=3d"; 8   $user='root'; 9   $pass='root'; 10   $dbh=new PDO($dsn, $user, $pass); 11   $res=$dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); 12 } 13 //如果不是select,就连接master(主)服务器 14 else 15 { 16   $master_server='192.168.33.22::3306'; 17   $dsn="mysql:host=$master_server;dbname=3dprintsys"; 18   $user='root'; 19   $pass='123456'; 20   $dbh=new PDO($dsn, $user, $pass); 21   $res=$dbh->exec($sql); 22 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyjyjd.html