Weicong
不一定,但该命名通用,表示"配置"的意思
我的太阳啊
static function getDatabase($id = 'proxy')
{
if ($id == 'proxy')
{
if (!self::$proxy)
{
self::$proxy = new \IMooc\Database\Proxy;
}
return self::$proxy;
}
$key = 'database_'.$id;
if ($id == 'slave')
{
$slaves = Application::getInstance()->config['database']['slave'];
$db_conf = $slaves[array_rand($slaves)];
}
else
{//这里单例出来的只是配置信息
$db_conf = Application::getInstance()->config['database'][$id];
}
$db = Register::get($key);
if (!$db) {
$db = new Database\MySQLi();
//根据配置信息实例$db,并储存到注册器数组中
$db->connect($db_conf['host'], $db_conf['user'], $db_conf['password'], $db_conf['dbname']);
Register::set($key, $db);
}
return $db;
}第二个问题问什么?
Best_ZJJ
在这只是最简单的案例演示,实际生产环境会根据“特定算法”决定连接到哪台台服务器。这个“特定算法”有可能依据“最少连接数”,有可能依据“最快响应”等。
其实,案例中的取随机数相当于用一种最简陋“算法”来保证了每次请求至少不会都连接到同一台服务器(实际场景不会这样做)。当然,如果老师讲课时提醒一句话,会减少很多同学的疑惑。