Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Модули » Кеширование в модуле с возможностью отключения

Кеширование в модуле с возможностью отключения


     24.07.2013    Все вопросы » Модули    3080

вопрос
Добрый вечер !

Как можно реализовать возможность вкл/отк кеша конкретно в модуле ?
$mod = dle_cache("mod", $config['skin']);
if (!$mod) {

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

$time_now  = time();
$time_last = $last_time;
$time_min  = $time_now - $time_last;
if ($time_min>$config_mod['cashe']){
create_cache ("mod", $mod, $config['skin']);
$time_write  = "<?PHP\n\n\$last_time = \"".$time_now."\"\n?>";
$write_file = ROOT_DIR.'/engine/data/mod_time.php';
$fp = fopen($write_file, "w");
$save = fwrite($fp, $time_write);
fclose($fp);
}}

echo($mod);

Ответил: ПафНутиЙ


<?
$disableCache=false;
$mod = dle_cache("mod", $config['skin']);
if (!$mod) {

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

    $time_now  = time();
    $time_last = $last_time;
    $time_min  = $time_now - $time_last;
    if ($time_min>$config_mod['cashe']) {
        if (!$disableCache) {
            create_cache ("mod", $mod, $config['skin']);
        }
        $time_write  = "<?PHP\n\n\$last_time = \"".$time_now."\"\n?>";
        $write_file = ROOT_DIR.'/engine/data/mod_time.php';
        $fp = fopen($write_file, "w");
        $save = fwrite($fp, $time_write);
        fclose($fp);
    }
}

echo($mod);
?>

10 комментариев

kolumb
Юзер

kolumb - 25 июля 2013 11:08 -

Скажите а если так сделать
<?php

if(!defined('DATALIFEENGINE'))
{die("Hacking attempt!");}

require ROOT_DIR.'/engine/data/mod_config.php';
require ROOT_DIR.'/engine/data/time.php';

$disableCache = false;
if ($config['allow_cache'] != "yes") { $config['allow_cache'] = "yes"; $disableCache = true;}

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

$time_now  = time();
$time_last = $last_time;
$time_min  = $time_now - $time_last;

if (intval($mod_config['cache'])==1 and $time_min>$mod_config['cache_time'])
{

create_cache ("mod", $mod, $config['skin']);
$time_write  = "<?PHP\n\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);
}

if(!$mod){
create_cache ("mod", $mod, $config['skin']);
  }
}

if ($disableCache) $config['allow_cache'] = false;
}


echo $mod;

?>


А в конфиге вкл=1 вык=0

P.S Есть здесь в коде что то лишнее ?

ПафНутиЙ
Админ

ПафНутиЙ - 25 июля 2013 11:19 -

зачем усложнять?
Что написано в /engine/data/mod_config.php ?

Каков вопрос - таков и ответ. Просто помните об этом.

kolumb
Юзер

kolumb - 25 июля 2013 11:24 -

ПафНутиЙ,
Пока не чего в дальнейшем будут все настройки модуля

<?PHP
$mod_config = array (
'cache' => "1",
);
?>

ПафНутиЙ
Админ

ПафНутиЙ - 25 июля 2013 13:26 -

Добавьте в конфиг:
'cache_enable' => "1",

пропишите просто:

if ($mod_config['cache_time'] == '1') {
            create_cache ("mod", $mod, $config['skin']);
        }

Каков вопрос - таков и ответ. Просто помните об этом.

kolumb
Юзер

kolumb - 25 июля 2013 13:51 -

Цитата: ПафНутиЙ
<?
$disableCache=false;
$mod = dle_cache("mod", $config['skin']);
if (!$mod) {
 
    ///////////////// КОД МОДУЛЯ /////////////////////
 
    $time_now  = time();
    $time_last = $last_time;
    $time_min  = $time_now - $time_last;
    if ($time_min>$config_mod['cashe']) {
        if (!$disableCache) {
            create_cache ("mod", $mod, $config['skin']);
        }
        $time_write  = "<?PHP\n\n\$last_time = \"".$time_now."\"\n?>";
        $write_file = ROOT_DIR.'/engine/data/mod_time.php';
        $fp = fopen($write_file, "w");
        $save = fwrite($fp, $time_write);
        fclose($fp);
    }
}
 
echo($mod);
?>

Если я правильно понял так ?

<?
$disableCache=false;
$mod = dle_cache("mod", $config['skin']);
if (!$mod) {

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

    $time_now  = time();
    $time_last = $last_time;
    $time_min  = $time_now - $time_last;
    if ($time_min>$config_mod['cashe']) {
        if (!$disableCache) {
            if ($mod_config['cache_enable'] == '1') {
            create_cache ("mod", $mod, $config['skin']);
        }
        }
        $time_write  = "<?PHP\n\n\$last_time = \"".$time_now."\"\n?>";
        $write_file = ROOT_DIR.'/engine/data/mod_time.php';
        $fp = fopen($write_file, "w");
        $save = fwrite($fp, $time_write);
        fclose($fp);
    }
}

echo($mod);
?>


А в конфиг
'cache_enable' => "1",

ПафНутиЙ
Админ

ПафНутиЙ - 25 июля 2013 19:45 -

<?
$mod = dle_cache("mod", $config['skin']);
if (!$mod) {
    require ROOT_DIR.'/engine/data/mod_config.php';

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

    $time_now  = time();
    $time_last = $last_time;
    $time_min  = $time_now - $time_last;
    if ($time_min>$config_mod['cashe']) {
        if ($mod_config['cache_enable'] == '1') {
            create_cache ("mod", $mod, $config['skin']);
        }
        $time_write  = "<?PHP\n\n\$last_time = \"".$time_now."\"\n?>";
        $write_file = ROOT_DIR.'/engine/data/mod_time.php';
        $fp = fopen($write_file, "w");
        $save = fwrite($fp, $time_write);
        fclose($fp);
    }
}

echo($mod);
?>

Каков вопрос - таков и ответ. Просто помните об этом.

kolumb
Юзер

kolumb - 25 июля 2013 23:31 -

Спасибо все заработало но есть одно НО !!!
Пробивал разные версии кеширования результат один и тот же !
вообщем (у меня по русскому языку двойка, я не знаю, что в русском языке не существует слова вообщем) проблема такая !
Заходим под двумя учетками админ и пользователь или гость с разных браузеров перед эти чистим кеш ! Если зайти первым админом то при клике по нику всплывает popup окно мы видим три кнопки админить профиль сообщения после заходим с другого браузера по пользователем или гостем видим тоже самое ! А если зайти первым пользователем а потом админом тогда админ уже не видит кнопки админить

Одним словом кто зашел первым те и права получают все остальные пока не почистишь кеш и не зайдешь снова !

Вот код модуля что здесь не так ???


ПафНутиЙ
Админ

ПафНутиЙ - 26 июля 2013 00:45 -

не учитываются группы пользователей.
создавайте кеш с учётом группы пользователя и всё будет ок.

Каков вопрос - таков и ответ. Просто помните об этом.

kolumb
Юзер

kolumb - 26 июля 2013 00:51 -

ПафНутиЙ,
Подскажите как это сделать пожалуйста !

kolumb
Юзер

kolumb - 26 июля 2013 23:15 -

На примере какого модуля можно посмотреть где реализован такой кеш ?

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

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

 11.05.2014 kolumb  Модули
наверх