Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Как очистить кеш по времени в сторонем модуле?

Как очистить кеш по времени в сторонем модуле?


     13.11.2015    Общие вопросы по PHP    646

вопрос
Здравствуйте, подскажите пожалуйста! Как сделать очистку кеша, конкретно в модуле по времени, не зависимо от настроек движка?

Мне нужно что бы кеш чистился к примеру: каждые 3 часа!

$moduleName = dle_cache('cachename_', $config['skin'], true);
if( !$moduleName) {


///////////////// КОД МОДУЛЯ /////////////////////


create_cache('cachename_', $moduleName, $config['skin'], true );
}
echo $moduleName;

Ответил: Gameer


В самый конец файла ( перед
?>
) вставьте
function get_cache($name, $id)
{
    global $config, $is_logged, $member_id;
    if( $is_logged ) $end_file = $member_id['user_group'];
    else $end_file = "0";
    $id = md5( $id );
    $name = $name . "_" . $id . "_" . $end_file;

    $buffer = @file_get_contents( ENGINE_DIR . "/cache/" . $name . ".tmp" );

    if ( $buffer !== false )
    {
        $file_date = @filemtime( ENGINE_DIR . "/cache/" . $name . ".tmp" );
        $file_date = time()-$file_date;
        if ( $file_date > ( 180 * 60 ) )
        {
            $buffer = false;
            @unlink( ENGINE_DIR . "/cache/" . $name . ".tmp" );
        }

        return $buffer;
    }
    else
        return $buffer;
}
Потом замените это
dle_cache('cachename_', $config['skin'], true);
на это
get_cache( "cachename_", $config['skin']);

Комментарии пользователей (3)

Gameer
224

1118 | 394

Gameer - 14 ноября 2015 00:24 - Эксперт

***Комментарий удален***

Истина в противоречии.​

kolumb
8

203 | 46

kolumb - 14 ноября 2015 01:23 - Юзер

Спасибо, работает!

gor.nizon
25 | 7

gor.nizon - 21 ноября 2015 10:58 - Юзер

Не выдумывайте велосипеды!
$dle_api->load_from_cache ( string $fname,  [, int $timeout [, string $type]]);
Чтение данных из файла кеша. Параметр $fname указывает имя файла кеша без указания его расширения. Необязательный параметр $timeout указывает количество секунд, в течении которых информацию из кеша считать актуальной. Если файл кеша будет устаревшим, то функция возвращает false.   Необязательный параметр $type указывает на тип данных который хранится в кеше,  если не 'text' - считаем, что хранился массив и возвращается массив данных.

Просто когда из кеша загружаетет, установите какое время считать инфу верной

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы