- Модуль: cluster
- Путь к файлу: ~/bitrix/modules/cluster/classes/general/redis.php
- Класс: CClusterRedis
- Вызов: CClusterRedis::saveConfig
static function saveConfig($servers) : void
{
self::$arList = false;
$isOnline = false;
$content = " 'DESC']);
while ($group = $clusterGroups->Fetch())
{
$defaultGroup = $groups[$group['ID']] = (int) $group['ID'];
}
foreach ($servers as $i => $server)
{
$isOnline |= ($server['STATUS'] == 'ONLINE');
$groupID = (int) $server['GROUP_ID'];
if (!array_key_exists($server['GROUP_ID'], $groups))
{
$groupID = $defaultGroup;
}
$content .= "t" . intval($i) . " => [n";
$content .= "tt'ID' => " . EscapePHPString($server['ID']) . ",n";
$content .= "tt'GROUP_ID' => " . $groupID . ",n";
$content .= "tt'HOST' => '" . EscapePHPString($server['HOST']) . "',n";
$content .= "tt'PORT' => " . intval($server['PORT']) . ",n";
switch ($server['STATUS'])
{
case 'ONLINE':
$content .= "tt'STATUS' => 'ONLINE',n";
break;
case 'OFFLINE':
$content .= "tt'STATUS' => 'OFFLINE',n";
break;
default:
$content .= "tt'STATUS' => 'READY',n";
break;
}
$content .= "tt'MODE' => '" . $server['MODE'] . "',n";
$content .= "tt'ROLE' => '" . $server['ROLE'] . "',n";
$content .= "t],n";
}
$content .= "];n?>";
file_put_contents($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/cluster/redis.php', $content);
bx_accelerator_reset();
self::$systemConfigurationUpdate = null;
$cache = BitrixMainConfigConfiguration::getValue('cache');
if ($isOnline)
{
if (
!is_array($cache)
|| !isset($cache['type'])
|| !is_array($cache['type'])
|| !isset($cache['type']['class_name'])
|| !($cache['type']['class_name'] === 'CPHPCacheRedisCluster')
)
{
BitrixMainConfigConfiguration::setValue('cache', [
'type' => [
'class_name' => 'CPHPCacheRedisCluster',
'extension' => 'redis',
'required_file' => 'modules/cluster/classes/general/redis_cache.php',
],
'failover' => Option::get('cluster', 'failower_settings'),
'timeout' => Option::get('cluster', 'redis_timeoit'),
'read_timeout' => Option::get('cluster', 'redis_read_timeout'),
'persistent' => (Option::get('cluster', 'redis_persistent') == 'Y'),
]);
self::$systemConfigurationUpdate = true;
}
}
else
{
if (
is_array($cache)
&& isset($cache['type'])
&& is_array($cache['type'])
&& isset($cache['type']['class_name'])
&& ($cache['type']['class_name'] === 'CPHPCacheRedisCluster')
)
{
BitrixMainConfigConfiguration::setValue('cache', null);
self::$systemConfigurationUpdate = false;
}
}
}