- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/db/dbconnectionpool.php
- Класс: BitrixMainDBDbConnectionPool
- Вызов: DbConnectionPool::getDbNodeConnection
static function getDbNodeConnection($nodeId, $checkStatus = true)
{
global $DB;
if(!array_key_exists($nodeId, self::$arNodes))
{
if(CModule::includeModule('cluster'))
self::$arNodes[$nodeId] = CClusterDBNode::getByID($nodeId);
else
self::$arNodes[$nodeId] = false;
}
$node = &self::$arNodes[$nodeId];
if(
is_array($node)
&& (
!$checkStatus
|| (
$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;
if($node_DB->connect($node["DB_HOST"], $node["DB_NAME"], $node["DB_LOGIN"], $node["DB_PASSWORD"]))
{
if(defined("DELAY_DB_CONNECT") && DELAY_DB_CONNECT===true)
{
if($node_DB->doConnect())
$node["DB"] = $node_DB;
}
else
{
$node["DB"] = $node_DB;
}
}
}
if(array_key_exists("DB", $node))
return $node["DB"];
}
if($bIgnoreErrors)
{
return false;
}
else
{
if(file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface/dbconn_error.php"))
include($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/php_interface/dbconn_error.php");
else
include($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/dbconn_error.php");
die();
}
}