PHP 开发学习[7] —— 代码实现主从数据库 读写分离

     背景:项目规划中,要求进行主从数据库的读写分离,其中对于主从数据库的创建和配置,网上有很充实的介绍,这里仅在配置成功的基础上进行代码端的判断实现。


1.ThinkPHP框架中,已经集成了主从数据库的操作,其中只需要对配置文件中的相应代码做修改即可。

具体的介绍可以参考官方开发文档的介绍.

PHP 开发学习[7] —— 代码实现主从数据库 读写分离_第1张图片


2.如果使用原生语句进行开发,需要进行sql语句的判断,根据网上的一些介绍和参考,核心代码如下。

值得一提的是,此处使用了mysql_connect()连接,据官方解释,强烈建议使用mysqli或者pdo连接.

所以,可以自行改动呗...

PHP 开发学习[7] —— 代码实现主从数据库 读写分离_第2张图片
 
3.解释好麻烦,粘贴示例代码,自行参考,欢迎指正...
 'wo¥¥ 的名字',
    'email' => '爱谁谁!别关心那么多,好嘛?'
);

echo '我在测试呢!';
$tag =insert('ms_users',$data);
echo $tag;
echo '
'; echo '
'; $res = getResultNum('select * from ms_users'); print_r($res);

4.执行代码,结果截图如下,其中第一张为初次运行的显示情况,第二张为刷新后的显示情况,跟数据表的字段限制有关,可自行检验。
 PHP 开发学习[7] —— 代码实现主从数据库 读写分离_第3张图片     PHP 开发学习[7] —— 代码实现主从数据库 读写分离_第4张图片

5.补充使用mysqli面向对象思想的核心代码
/**
 * 思路:根据传入的sql语句,判断是否为查询操作  此处使用 mysqli
 *      前提是,开启mysqli的扩展功能
 * @param $sql 执行的SQL语句
 * @return resource
 */
function connectTo($sql){
    $mysqli = null;
    $querystr = trim($sql);
    $querystr = substr($querystr,0,6);

    //使用 mysqli 面向对象方式进行数据库的连接操作
    if($querystr != 'select')
    {
        //如果不是查询语句就连接主服务器
        //创建对象并打开连接,最后一个参数是选择的数据库名称
        $mysqli = new mysqli(DB_HOST_1,DB_USER_1,DB_PWD_1,DB_DBNAME);
        //检查连接是否成功
        if (mysqli_connect_errno()){
            die('主库连接失败Error:'). mysqli_connect_error();
        }
        print_r('主库连接成功');
    }else{
        //如果是查询语句就连接从服务器
        $mysqli = new mysqli(DB_HOST_2,DB_USER_2,DB_PWD_2,DB_DBNAME);
        //检查连接是否成功
        if (mysqli_connect_errno()){
            die('从库连接失败Error::'). mysqli_connect_error();
        }
        print_r('从库连接成功');
    }
    $mysqli->query("set names '".DB_CHARSET."'");
    return $mysqli;
}


你可能感兴趣的:(PHP,数据库)