新版sp框架,默认支持主从库配置,直接在protected/config.php文件内进行配置即可读写分离。

    配置方法:

    • 原有的mysql配置,代表的是主库(写库)的配置,因为大部分情况下主库是只写一个链接,故主库配置只有一个。
    • 从库(读库)的配置在’MYSQL_SLAVE’节点下,是一个数组,每项分别代表一个从库配置。
    • 请注意从库配置是多级的数组,如果只有一个也需要写成多级数组
    • 从库之间的读取是随机轮询

    主库也可以是多个,这里就涉及到多数据库链接的方法了,下面会介绍到。

    二、多库链接方法

    1. $dbconfig = array(
    2. 'MYSQL_HOST' => 'localhost',
    3. 'MYSQL_PORT' => '3306',
    4. 'MYSQL_DB' => 'test1',
    5. 'MYSQL_PASS' => '',
    6. 'MYSQL_CHARSET' => 'utf8',
    7. // 实例化
    8. $guestbook = new Model("guestbook");
    9. // 先用老库查询一下
    10. $result = $guestbook->findAll();
    11. dump($result);
    12. $guestbook->dbInstance($dbconfig, 'master', true);
    13. // 从新库更新
    14. $guestbook->update(array("id"=>1), array("dig"=>200));
    15. // 从新库查询一下
    16. $result = $guestbook->findAll();
    17. dump($result);

    我们要关注的是dbInstance()方法,该方法可以设置(或覆盖)当前的数据库链接实例。

    dbInstance()方法有三个参数:$db_config, $db_config_key, $force_replace。

    • $db_config数据库配置数组
    • $db_config_key是链接句柄的标识,一般主库是master,从库是slave_0/slave_1…,如果设置成“master”,那么就是覆盖主库的链接。