dle.in.ua » Хаки » Автоочистка кеша

Автоочистка кеша

Автор: sir95 от 11-09-2009, 23:27
Хак позволяет автоматически очищать кеш при истичении определённого времени.
Установка:
В папке /engine/data создать файл с именем time.php и следующим содержимым:

<?PHP
$last_time = "0"
?>


Ставим файлу права на запись.

В файле /engine/inc/options.php находим:

showRow( $lang['opt_sys_cac'], $lang['opt_sys_cad'], makeDropDown( array ("yes" => $lang['opt_sys_yes'], "no" => $lang['opt_sys_no'] ), "save_con[allow_cache]", "{$config['allow_cache']}" ) );

и ниже пишем:
showRow( 'Автоочистка кеша', 'Время в секундах спустя которое кеш автоматически очиститься', "<input class=edit type=text style=\"text-align: center;\"  name='save_con[cache_time]' value=\"{$config['cache_time']}\" size=10>" );


В файле index.php ищем:

define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );

и ниже пишем:
require ROOT_DIR.'/engine/data/time.php';
$time['min']  = time() - $last_time;
if ($time['min']<0){
  $time['min'] = 0;
}
$time['clean'] = $config['cache_time'] - $time['min'];
if ($time['min']>=$config['cache_time']){
$time['now'] = time();
clear_cache();
$time['write']  = "<?PHP\n\$last_time = \"".$time['now']."\"\n?>";
$write_file = ROOT_DIR.'/engine/data/time.php';
$fp = fopen($write_file, "w+");
$save = fwrite($fp, $time['write']);
fclose($fp);
}
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Как раз думал о подобном пару дней назад.
    Спасибо за реализацию winked
    Ставлю "+"
    • networkworker
    • Регистрация: --
    • Репутация: (||)
    • 12 сентября 2009 02:26
    • 1
    ^
  • Группа: User
  • Icq: 362557054
  • Комментариев: 124
  • Публикаций: 5
  • lol опять у меня скопипастили...

    --------------------
    • GausS
    • Регистрация: 16.07.2008
    • Репутация: (0|0|0)
    • 12 сентября 2009 09:39
    • 2
    ^
  • Группа: User
  • Icq: 288569677
  • Комментариев: 703
  • Публикаций: 245
  • GausS,
    Так у нас вылаживай и копипастить небудем.
    fellow

    --------------------
    • GauraStyle
    • Регистрация: 21.01.2008
    • Репутация: (0|0|0)
    • 12 сентября 2009 10:22
    • 3
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 52
  • Публикаций: 0
  • У меня не заработал на 8.2
    PHP Fatal error: Call to undefined function clear_cache() in /home/www/site/index.php on line 34

    a 34:

    require ROOT_DIR.'/engine/data/time.php';
    $time['min'] = time() - $last_time;
    if ($time['min']<0){
    $time['min'] = 0;
    }
    $time['clean'] = $config['cache_time'] - $time['min'];
    if ($time['min']>=$config['cache_time']){
    $time['now'] = time();
    clear_cache();
    $time['write'] = "<?PHP\n\$last_time = \"".$time['now']."\"\n?>";
    $write_file = ROOT_DIR.'/engine/data/time.php';
    $fp = fopen($write_file, "w+");
    $save = fwrite($fp, $time['write']);
    fclose($fp);
    }
    • sneiks
    • Регистрация: 22.08.2008
    • Репутация: (0|0|0)
    • 12 сентября 2009 11:16
    • 4
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Задумка хороша, спасибо.
    • ReZoV
    • Регистрация: --
    • Репутация: (||)
    • 12 сентября 2009 11:43
    • 5
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • sneiks, аналогично. Кто подскажет, что сделать, что бы работало на 8.2?
    • aback
    • Регистрация: --
    • Репутация: (||)
    • 12 сентября 2009 12:27
    • 6
    ^
  • Группа: User
  • Icq: 288569677
  • Комментариев: 703
  • Публикаций: 245
  • aback,
    Вон Автор я так поняв GausS, так что пиши ему или в ПМ или асько, что бы он сказал как и что, ну и плюс пусть тут выложит решение под это дело.
    fellow

    --------------------
    • GauraStyle
    • Регистрация: 21.01.2008
    • Репутация: (0|0|0)
    • 12 сентября 2009 12:45
    • 7
    ^
  • Группа: User
  • Icq: 6017724
  • Комментариев: 276
  • Публикаций: 4
  • sneiks, вместо того,

    в index.php найти:

    require_once ROOT_DIR . '/engine/init.php';


    ниже вставить:


    require ROOT_DIR.'/engine/data/time.php';
    $time['min'] = time() - $last_time;
    if ($time['min']<0){
    $time['min'] = 0;
    }
    $time['clean'] = $config['cache_time'] - $time['min'];
    if ($time['min']>=$config['cache_time']){
    $time['now'] = time();
    clear_cache();
    $time['write'] = "<?PHP\n\$last_time = \"".$time['now']."\"\n?>";
    $write_file = ROOT_DIR.'/engine/data/time.php';
    $fp = fopen($write_file, "w+");
    $save = fwrite($fp, $time['write']);
    fclose($fp);
    }



    --------------------
    • vilcom
    • Регистрация: 18.10.2008
    • Репутация: (0|0|0)
    • 13 сентября 2009 09:44
    • 8
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • vilcom, Спасибо! Работает, вот только скажите кто-то, где написать сколько времени и в каких единицах оно измеряется(секунды, минуты...)
    :) Я вроде понял, оно само очищает, если больше 30кб, пост оформлен конечно кривовтато, но всеравно спс, у меня в день по 50мб кеш засоряется, и сервер часто лежит из-за этого))
    • lexroman
    • Регистрация: --
    • Репутация: (||)
    • 13 сентября 2009 11:19
    • 9
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 556
  • Публикаций: 121
  • прикольный хак

    --------------------
    • neoks
    • Регистрация: 20.07.2009
    • Репутация: (0|0|0)
    • 15 сентября 2009 23:53
    • 10
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 52
  • Публикаций: 0
  • lexroman,
    Sps
    • sneiks
    • Регистрация: 22.08.2008
    • Репутация: (0|0|0)
    • 18 сентября 2009 18:32
    • 11
    ^
  • Группа: User
  • Icq: 441200771
  • Комментариев: 28
  • Публикаций: 0
  • Не знаю зачем вы засоряете index.php
    Автор явно поленился с него модуль сделать.

    В общем я уже это сделал.
    Потом выложу.
    • Diren
    • Регистрация: 24.08.2009
    • Репутация: (0|0|0)
    • 24 сентября 2009 21:15
    • 12
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • И зачем тогда вобще нужен этот кэш, если его очищать постоянно, какой от этого толк!? Предлагаю вместо очистки кэша сделать удаление мертвых файлов, которые остаются после неудачных публикаций...
    • Vadeinpace
    • Регистрация: --
    • Репутация: (||)
    • 25 сентября 2009 18:12
    • 13
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 26
  • Публикаций: 1
  • Автору +1 smile
    • Skater
    • Регистрация: 5.11.2009
    • Репутация: (0|0|0)
    • 28 ноября 2009 10:30
    • 14
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Vadeinpace ок, зделай
    • Silveral
    • Регистрация: --
    • Репутация: (||)
    • 28 ноября 2009 10:55
    • 15
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 52
  • Публикаций: 0
  • vilcom,
    Pri otprafki PM viletaet takaja oshibka:

    PHP Warning: Cannot use a scalar value as an array in /home/www/site/index.php on line 29, referer: http://www.site.ru/index.php?do=pm&doaction=newpm

    require ROOT_DIR.'/engine/data/time.php';
    $time['min'] = time() - $last_time; <<< 29 stroka! :(
    if ($time['min']<0){
    $time['min'] = 0;
    }
    $time['clean'] = $config['cache_time'] - $time['min'];
    if ($time['min']>=$config['cache_time']){
    $time['now'] = time();
    clear_cache();
    $time['write'] = "<?PHP\n\$last_time = \"".$time['now']."\"\n?>";
    $write_file = ROOT_DIR.'/engine/data/time.php';
    $fp = fopen($write_file, "w+");
    $save = fwrite($fp, $time['write']);
    fclose($fp);
    }
    • sneiks
    • Регистрация: 22.08.2008
    • Репутация: (0|0|0)
    • 27 января 2010 14:30
    • 16
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 5
  • Публикаций: 0
  • Кэш не сбрасывается recourse
    • megasion
    • Регистрация: 31.12.2009
    • Репутация: (0|0|0)
    • 24 февраля 2010 19:02
    • 17
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • aback,

    на 8.2 всё пашет feel

    утебя руки кривые

    Цитата: lexroman
    $time['min']


    во здеся $time['min'] = time(TIME)
    • lockon
    • Регистрация: --
    • Репутация: (||)
    • 5 мая 2010 12:02
    • 18
    ^
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.