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