23 янв
Автор: MSW
Версия DLE: 9.0-9.2 (поидее все версии)
Сайт поддержки: https://0-web.ru/
Хак заменяющий стандартное файловое кеширование на кеширование MemCache.
Соответственно на сервере/хостинге должна быть поддержка MemCache и в настройках выставлено достаточное кол-во памяти.
Предварительный размер памяти который понадобится выделить можно посмотреть в админке DLE пункт Общий размер кеша.
Файл: /engine/modules/functions.php
Найти:
function dle_cache($prefix, $cache_id = false, $member_prefix = false) {
global $config, $is_logged, $member_id;
if( $config['allow_cache'] != "yes" ) return false;
if( $is_logged ) $end_file = $member_id['user_group'];
else $end_file = "0";
if( ! $cache_id ) {
$filename = ENGINE_DIR . '/cache/' . $prefix . '.tmp';
} else {
$cache_id = md5( $cache_id );
if( $member_prefix ) $filename = ENGINE_DIR . "/cache/" . $prefix . "_" . $cache_id . "_" . $end_file . ".tmp";
else $filename = ENGINE_DIR . "/cache/" . $prefix . "_" . $cache_id . ".tmp";
}
return @file_get_contents( $filename );
}
function create_cache($prefix, $cache_text, $cache_id = false, $member_prefix = false) {
global $config, $is_logged, $member_id;
if( $config['allow_cache'] != "yes" ) return false;
if( $is_logged ) $end_file = $member_id['user_group'];
else $end_file = "0";
if( ! $cache_id ) {
$filename = ENGINE_DIR . '/cache/' . $prefix . '.tmp';
} else {
$cache_id = md5( $cache_id );
if( $member_prefix ) $filename = ENGINE_DIR . "/cache/" . $prefix . "_" . $cache_id . "_" . $end_file . ".tmp";
else $filename = ENGINE_DIR . "/cache/" . $prefix . "_" . $cache_id . ".tmp";
}
$fp = fopen( $filename, 'wb+' );
fwrite( $fp, $cache_text );
fclose( $fp );
@chmod( $filename, 0666 );
}
function clear_cache($cache_area = false) {
$fdir = opendir( ENGINE_DIR . '/cache' );
while ( $file = readdir( $fdir ) ) {
if( $file != '.' and $file != '..' and $file != '.htaccess' and $file != 'system' ) {
if( $cache_area ) {
if( strpos( $file, $cache_area ) !== false ) @unlink( ENGINE_DIR . '/cache/' . $file );
} else {
@unlink( ENGINE_DIR . '/cache/' . $file );
}
}
}
}
Заменить на:
function dle_cache($prefix, $cache_id = false, $member_prefix = false) {
global $config, $is_logged, $member_id;
if( $config['allow_cache'] != "yes" ) return false;
if( $is_logged ) $end_file = $member_id['user_group'];
else $end_file = "0";
//****** Memcache by MSW *** start ******//
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
if( ! $cache_id ) {
$filename = $prefix;
} else {
$cache_id = md5( $cache_id );
if( $member_prefix ) $filename = $prefix."_".$cache_id."_".$end_file;
else $filename = $prefix."_".$cache_id;
}
return $memcache->get($filename);
$memcache->close();
//****** Memcache by MSW *** stop ******//
}
function create_cache($prefix, $cache_text, $cache_id = false, $member_prefix = false) {
global $config, $is_logged, $member_id;
if( $config['allow_cache'] != "yes" ) return false;
if( $is_logged ) $end_file = $member_id['user_group'];
else $end_file = "0";
//****** Memcache by MSW *** start ******//
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
if( ! $cache_id ) {
$filename = $prefix;
} else {
$cache_id = md5( $cache_id );
if( $member_prefix ) $filename = $prefix."_".$cache_id."_".$end_file;
else $filename = $prefix."_".$cache_id;
}
$memcache->set($filename, $cache_text);
$memcache->close();
//****** Memcache by MSW *** stop ******//
}
function clear_cache($cache_area = false) {
//****** Memcache by MSW *** start ******//
if( $cache_area ) {
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$memcache->set($cache_area, "");
$memcache->close();
} else {
$s = @fsockopen('localhost','11211');
fwrite($s, 'flush_all'."\r\n");
$buf='';
while ((!feof($s))) {
$buf .= fgets($s, 256);
if (strpos($buf,"OK\r\n")!==false){ // flush_all says ok
break;
}
}
fclose($s);
}
//****** Memcache by MSW *** stop ******//
}
*** Изменена функция очистки кеша ***
Внимание! Данная система на данный момент не является полноценно рабочей! Не происходит коректное удаление кеша!
Для контроля того что твориться у нас в мемкеше рекомендую использовать скрипт:
72
7.78 Kb
memcache.zip
Загружен: 23-01-2011, 01:34 / MD5: 19665dac3cd77835fa090608ec1be500
Предварительно рекомендую сменить логин и пароль для входа. В этом скрипте в строках:
define('ADMIN_USERNAME','memcache'); // Admin Username
define('ADMIN_PASSWORD','password'); // Admin Password
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.