- Модуль: cluster
- Путь к файлу: ~/bitrix/modules/cluster/classes/general/dbnode.php
- Класс: CAllClusterDBNode
- Вызов: CAllClusterDBNode::GetByID
static function GetByID($node_id, $arVirtNode=false)
{
global $DB, $CACHE_MANAGER;
static $arNodes = false;
static $arVirtNodes = array();
//This code sets and gets virtual nodes
//needed to test connection just before
//save node credentials into db
if(preg_match('/^v(d+)$/', $node_id))
{
if(is_array($arVirtNode))
{
$arVirtNodes[$node_id] = $arVirtNode;
return true;
}
else
{
return $arVirtNodes[$node_id];
}
}
//Normal method continues here
$node_id = intval($node_id);
if($arNodes === false)
{
$cache_id = "db_nodes";
if(
CACHED_b_cluster_dbnode !== false
&& $CACHE_MANAGER->Read(CACHED_b_cluster_dbnode, $cache_id, "b_cluster_dbnode")
)
{
$arNodes = $CACHE_MANAGER->Get($cache_id);
}
else
{
$arNodes = array();
$rs = $DB->Query("SELECT * FROM b_cluster_dbnode ORDER BY ID", false, '', array('fixed_connection'=>true));
while($ar = $rs->Fetch())
$arNodes[intval($ar['ID'])] = $ar;
if(CACHED_b_cluster_dbnode !== false)
$CACHE_MANAGER->Set($cache_id, $arNodes);
}
}
return $arNodes[$node_id];
}