Оптимізація очищення кешу DLE

file

Автор:MSWВерсія DLE:будь-яка

Додаткові вимоги:- виділений сервер (хоча може і на хостингу буде працювати) - включена опція виконання exec в php

Оптимізація очищення кеша DLE шляхом перенесення функції видалення файлів із команд php на команди системи.

На даний момент очищення кешу в ДЛЕ відбувається на функції пхп:

$fdir = opendir(ENGINE_DIR. '/cache');

while ( $file = readdir( $fdir ) ) if( $file != '.' and $file != '..' and $file != '.htaccess' and $file != 'system' )

if( strpos( $file, $cache_area ) !== false ) @unlink( ENGINE_DIR . '/cache/' . $file );

@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( strpos( $file, $cache_area ) !== false ) @unlink( ENGINE_DIR . '/cache/' . $file );

@unlink( ENGINE_DIR . '/cache/' . $file );

Замінити на нову:

Перевіряємо: заходимо в адмінку і тиснемо - очистити кеш, якщо розмір кеша тепер 0 - значить все працює! Якщо не 0 - то в новій функції потрібно замінити: ".ENGINE_DIR."

на повний шлях до папки енжин, наприклад:/var/www/my_site/engine/