数据库架构讲解

 


 

数据库

支持多个数据库,框架采用单例模式来获取某个数据库实例,并且采用单例模式来获取数据库连接

 

数据库配置文件(/config/db.config.php)

 

return array(
    'mysql' => [
        'master' => [
            'dsn' => 'mysql:host=localhost;port=3306;dbname=timophp;charset=utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => 'timo_',
        ],
        'image' => [
            'dsn' => 'mysql:host=192.168.1.210;dbname=images;charset=utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => 'timo_',
        ]
    ]
);

 

获取数据库实例

 

<?php

$db_config = Config::load('runtime')->get('mysql', 'master');

$db = Db::getInstance($db_config);

 

读写分离支持

设置配置项rw_separate为true就开启读写分离,并且要配置slave配置项,可以配置一个或多个,如下面就配置了2个从数据库

 

配置文件

 

return [
    'mysql' => [
        'master' => [
            'dsn' => 'mysql:host=192.168.1.200;port=3306;dbname=timophp;charset=utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => 'timo_',
            'rw_separate' => true,
        ],
        'slave' => [
            [
                'dsn' => 'mysql:host=192.168.1.201;dbname=timophp;charset=utf8',
                'user' => 'root',
                'password' => 123456,
                'prefix' => 'timo_',
            ],
            [
                'dsn' => 'mysql:host=192.168.31.202;dbname=timophp;charset=utf8',
                'user' => 'root',
                'password' => 123456,
                'prefix' => 'timo_',
            ],
        ],
        'image' => [
            'dsn' => 'mysql:host=192.168.1.201;dbname=images;charset=utf8',
            'user' => 'root',
            'password' => 123456,
            'prefix' => 'timo_',
        ]
    ],
];