5
окт
Автор: MSW
Версия DLE: любая
Сайт поддержки: https://0-web.ru/
Дополнительные требования:
- выделенный сервер(хотя может и на хостинге будет работать)
- включенная опция выполнения exec в php
Оптимизация очистки кеша DLE путём переноса функции удаления файлов с команд php на команды системы.
На данный момент очистка кеша в ДЛЕ происходит на функции пхп:
$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 );
}
}
}
из функции видно что читаем содержимое директории, проверяя не является ли файл директорией или другим файлом и т.д. а после удаляем если файл отвечает критериям проверки.
А почему бы для этого не посылая команду серверу?
Он то сделает это быстрее и не надо делать отсеивания на директории, ведь можно указать с каким расширением удалять файлы!
Решение:
Файл: /engine/modules/functions.php
Найти функцию очистки кеша:
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 );
}
}
}
}
Заменить на новую:
#****** Оптимизация от MSW ******#
function clear_cache($cache_area = false) {
if( $cache_area ) {
exec("rm ".ENGINE_DIR."/cache/{$cache_area}*.tmp");
} else {
exec("rm ".ENGINE_DIR."/cache/*.tmp");
}
}
#****** Оптимизация от MSW ******#
Проверяем: заходим в админку и жмём - очистить кеш, если размер кеша теперь 0 - значит всё работает!
Если не 0 - то в новой функции нужно заменить:
".ENGINE_DIR."
на полный путь к папке енжин, например: /var/www/my_site/engine/
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.