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

Хак позволяет автоматически очищать кеш при истичении определённого времени.
Установка:
В папке /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);
}
Другие новости по теме:

Категория: Хаки ----- Просмотров: 2429 ----- Комментариев: 18

Вернуться

  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Как раз думал о подобном пару дней назад.
Спасибо за реализацию winked
Ставлю "+"
  • GausS

  • 12 сентября 2009 09:39
  • Группа: User
  • ICQ: 362557054
  • Регистрация: 16.07.2008
  • Комментариев: 124
  • Публикаций: 5
^
lol опять у меня скопипастили...

--------------------
  • Группа: User
  • ICQ: 288569677
  • Регистрация: 21.01.2008
  • Комментариев: 703
  • Публикаций: 245
^
GausS,
Так у нас вылаживай и копипастить небудем.
fellow

--------------------
  • sneiks

  • 12 сентября 2009 11:16
  • Группа: User
  • ICQ: --
  • Регистрация: 23.08.2008
  • Комментариев: 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);
}
  • ReZoV

  • 12 сентября 2009 11:43
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Задумка хороша, спасибо.
  • aback

  • 12 сентября 2009 12:27
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
sneiks, аналогично. Кто подскажет, что сделать, что бы работало на 8.2?
  • Группа: User
  • ICQ: 288569677
  • Регистрация: 21.01.2008
  • Комментариев: 703
  • Публикаций: 245
^
aback,
Вон Автор я так поняв GausS, так что пиши ему или в ПМ или асько, что бы он сказал как и что, ну и плюс пусть тут выложит решение под это дело.
fellow

--------------------
  • vilcom

  • 13 сентября 2009 09:44
  • Группа: User
  • ICQ: 6017724
  • Регистрация: 18.10.2008
  • Комментариев: 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);
}



--------------------
  • lexroman

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

  • 15 сентября 2009 23:53
  • Группа: User
  • ICQ: --
  • Регистрация: 20.07.2009
  • Комментариев: 556
  • Публикаций: 121
^
прикольный хак

--------------------
  • sneiks

  • 18 сентября 2009 18:32
  • Группа: User
  • ICQ: --
  • Регистрация: 23.08.2008
  • Комментариев: 52
  • Публикаций: 0
^
lexroman,
Sps
  • Diren

  • 24 сентября 2009 21:15
  • Группа: User
  • ICQ: 441200771
  • Регистрация: 24.08.2009
  • Комментариев: 28
  • Публикаций: 0
^
Не знаю зачем вы засоряете index.php
Автор явно поленился с него модуль сделать.

В общем я уже это сделал.
Потом выложу.
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
И зачем тогда вобще нужен этот кэш, если его очищать постоянно, какой от этого толк!? Предлагаю вместо очистки кэша сделать удаление мертвых файлов, которые остаются после неудачных публикаций...
  • Skater

  • 28 ноября 2009 10:30
  • Группа: User
  • ICQ: --
  • Регистрация: 5.11.2009
  • Комментариев: 26
  • Публикаций: 1
^
Автору +1 smile
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Vadeinpace ок, зделай
  • sneiks

  • 27 января 2010 14:30
  • Группа: User
  • ICQ: --
  • Регистрация: 23.08.2008
  • Комментариев: 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);
}
  • Группа: User
  • ICQ: --
  • Регистрация: 31.12.2009
  • Комментариев: 5
  • Публикаций: 0
^
Кэш не сбрасывается recourse
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
aback,

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

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

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


во здеся $time['min'] = time(TIME)