- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/database.php
- Класс: CAllDatabase
- Вызов: CAllDatabase::GetDBNodeConnection
static function GetDBNodeConnection($node_id, $bIgnoreErrors = false, $bCheckStatus = true)
{
global $DB;
if(!array_key_exists($node_id, self::$arNodes))
{
if(CModule::IncludeModule('cluster'))
self::$arNodes[$node_id] = CClusterDBNode::GetByID($node_id);
else
self::$arNodes[$node_id] = false;
}
$node = &self::$arNodes[$node_id];
if(
is_array($node)
&& (
!$bCheckStatus
|| (
$node["ACTIVE"] == "Y"
&& ($node["STATUS"] == "ONLINE" || $node["STATUS"] == "READY")
)
)
&& !isset($node["ONHIT_ERROR"])
)
{
if(!array_key_exists("DB", $node))
{
$node_DB = new CDatabase;
$node_DB->type = $DB->type;
$node_DB->debug = $DB->debug;
$node_DB->DebugToFile = $DB->DebugToFile;
$node_DB->bNodeConnection = true;
$node_DB->node_id = $node_id;
if($node_DB->Connect($node["DB_HOST"], $node["DB_NAME"], $node["DB_LOGIN"], $node["DB_PASSWORD"], "node".$node_id))
{
if(defined("DELAY_DB_CONNECT") && DELAY_DB_CONNECT===true)
{
if($node_DB->DoConnect("node".$node_id))
$node["DB"] = $node_DB;
}
else
{
$node["DB"] = $node_DB;
}
}
}
if(array_key_exists("DB", $node))
return $node["DB"];
}
if($bIgnoreErrors)
{
return false;
}
else
{
static::showConnectionError();
die();
}
}