• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/data/cacheengine.php
  • Класс: BitrixMainDataCacheEngine
  • Вызов: CacheEngine::configure
protected function configure($options = []) : array
{
	$config = [];
	$cacheConfig = ConfigConfiguration::getValue('cache');

	if (!$cacheConfig || !is_array($cacheConfig))
	{
		return $config;
	}

	if (isset($options['type']))
	{
		$type = $options['type'];
	}
	else
	{
		if (is_array($cacheConfig['type']) && is_set($cacheConfig['type']['extension']))
		{
			$type = $cacheConfig['type']['extension'];
		}
		else
		{
			$type = $cacheConfig['type'];
		}
	}

	$config['type'] = $type;
	$config['className'] = static::getConnectionClass();

	if (!isset($config['servers']) || !is_array($config['servers']))
	{
		$config['servers'] = [];
	}

	if (isset($cacheConfig[$type]) && is_array($cacheConfig[$type]) && !empty($cacheConfig[$type]['host']))
	{
		$config['servers'][] = [
			'host' => $cacheConfig[$type]['host'],
			'port' => (int) $cacheConfig[$type]['port']
		];
	}

	// Settings from .settings.php
	if (isset($cacheConfig['servers']) && is_array($cacheConfig['servers']))
	{
		$config['servers'] = array_merge($config['servers'], $cacheConfig['servers']);
	}

	// Setting from cluster config
	if (isset($options['servers']) && is_array($options['servers']))
	{
		$config['servers'] = array_merge($config['servers'], $options['servers']);
	}

	if (isset($cacheConfig['use_lock']))
	{
		$this->useLock = (bool) $cacheConfig['use_lock'];
	}

	if (isset($cacheConfig['sid']) && ($cacheConfig['sid'] != ''))
	{
		$this->sid = $cacheConfig['sid'];
	}

	// Only redis
	if (isset($cacheConfig['serializer']))
	{
		$config['serializer'] = (int) $cacheConfig['serializer'];
	}

	$config['persistent'] = true;
	if (isset($cacheConfig['persistent']) && $cacheConfig['persistent'] == 0)
	{
		$config['persistent'] = false;
	}

	if (isset($cacheConfig['actual_data']))
	{
		$this->useLock = !$cacheConfig['actual_data'];
	}

	if (!$this->useLock)
	{
		$this->ttlMultiplier = 1;
	}

	if (isset($cacheConfig['ttl_multiplier']) && $this->useLock)
	{
		$this->ttlMultiplier = (int) $cacheConfig['ttl_multiplier'];
		if ($this->ttlMultiplier < 1)
		{
			$this->ttlMultiplier = 1;
		}
	}

	if (isset($cacheConfig['full_clean']))
	{
		$this->fullClean = (bool) $cacheConfig['full_clean'];
	}

	return $config;
}