• Модуль: 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];
}