• Модуль: cluster
  • Путь к файлу: ~/bitrix/modules/cluster/classes/mysql/slave.php
  • Класс: CClusterSlave
  • Вызов: CClusterSlave::GetList
static function GetList(): array
{
	global $DB;
	static $slaves = false;
	if ($slaves === false)
	{
		$cacheID = 'db_slaves_v2';

		/** @var BitrixMainDataManagedCache $cache */
		$cache = Application::getInstance()->getManagedCache();
		if (
			CACHED_b_cluster_dbnode !== false
			&& $cache->read(CACHED_b_cluster_dbnode, $cacheID, 'b_cluster_dbnode')
		)
		{
			$slaves = $cache->get($cacheID);
		}
		else
		{
			$slaves = [];

			$rs = $DB->Query("
				SELECT ID, WEIGHT, ROLE_ID, GROUP_ID
				FROM b_cluster_dbnode
				WHERE STATUS = 'ONLINE' AND (SELECTABLE is null or SELECTABLE = 'Y')
				ORDER BY ID
			", false, '', ['fixed_connection' => true]);
			while ($ar = $rs->Fetch())
			{
				$slaves[intval($ar['ID'])] = $ar;
			}

			if (CACHED_b_cluster_dbnode !== false)
			{
				$cache->set($cacheID, $slaves);
			}
		}
	}
	return $slaves;
}