Работа с мемкешем на хостинге показала, что в DataLife Engine при использовании сокета (вместо привычных IP-адреса и порта) возникают те же проблемы, что и в SMF. То есть, при сохранении настроек кеширование не работает.

Сегодня я кратенько расскажу, как заставить DLE использовать путь к сокету memcached вместо IP-адреса и номера порта.

Для этого нужно в файле /engine/modules/functions.php найти конструкцию

$mcache = false;
if ( $config['cache_type'] ) {
	if ( function_exists('memcache_connect') ) {
		$memcache_server = explode(":", $config['memcache_server']);
		$mcache = @memcache_connect( $memcache_server[0], $memcache_server[1] );
		if( $mcache AND function_exists('memcache_set_compress_threshold') )
		{
			memcache_set_compress_threshold( $mcache, 20000, 0.2 );
		}
	}
}

и заменить её на вот такую:

$mcache = false;
	if ( $config['cache_type'] ) {
		if ( function_exists('memcache_connect') ) {
		$memcache_server = explode(":", $config['memcache_server']);
			if ($memcache_server[0] == 'unix') 
				{
				$memcache_server = array($config['memcache_server'], 0);
				}
		$mcache = @memcache_connect( $memcache_server[0], $memcache_server[1] );
		if( $mcache AND function_exists('memcache_set_compress_threshold') )
		{
			memcache_set_compress_threshold( $mcache, 20000, 0.2 );
		}
	}
}

После этих изменений зайдите в админ-панели сайта и в разделе «Настройка системы» — «Оптимизация«,  поле «Данные для подключения к Memcache серверу» нужно ввести путь к сокету без указания порта:

unix:///home/имя_пользователя/.system/memcache/socket

 

После сохранения DLE без каких-либо проблем начнёт использовать мемкеш через сокет.

На всякий случай готовый файл для DLE версии 10.2 можно скачать вот тут (файл в архиве .zip):

Скачать functions.php для DLE