Оптимизация за почистване на DLE кеш
Автор:MSWDLE версия:произволна
Допълнителни изисквания:- специален сървър (alkaya може да работи усилено върху хостинг) - активирана опция за изпълнение в php
Оптимизиране на изчистването на DLE кеша чрез преместване на функцията за изтриване на файлове от php команди към системни команди.
В момента изчистването на кеша в DLE се извършва на PHP функцията:
$fdir = opendir( ENGINE_DIR. '/кеш');
while ( $file = readdir( $fdir ) ) if( $file != '.' и $file != '..' и $file != '.htaccess' и $file != 'system' )
if( strpos( $file, $cache_area ) !== false ) @unlink( ENGINE_DIR . '/cache/' . $file );
@unlink( ENGINE_DIR . '/cache/' . $file );
от функцията става ясно, че четем съдържанието на директорията, като проверяваме дали файла е директория или друг файл и т.н. и след това изтрийте, ако файлът отговаря на критериите за проверка.
Защо не изпратите команда до сървъра за това? Той ще го направи по-бързо и не е необходимо да филтрирате директории, защото можете да посочите файловото разширение, с което да изтриете!
Решение: Файл: /engine/modules/functions.php Намиране на функция за изчистване на кеша:
функция clear_cache($cache_area = false)
$fdir = opendir( ENGINE_DIR. '/кеш');
while ( $file = readdir( $fdir ) ) if( $file != '.' и $file != '..' и $file != '.htaccess' и $file != 'system' )
if( strpos( $file, $cache_area ) !== false ) @unlink( ENGINE_DIR . '/cache/' . $file );
@unlink( ENGINE_DIR . '/cache/' . $file );
Сменете с нов:
Проверяваме: отидете в администраторския панел и кликнете - изчистете кеша, ако размерът на кеша сега е 0 - тогава всичко работи! Ако не е 0, тогава в новата функция трябва да замените: ".ENGINE_DIR."
до пълния път до папката engin, например:/var/www/my_site/engine/