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

Не могу разобраться с кешем DLE, что делать?


     30.10.2014    Общие вопросы, Общие вопросы по PHP    1786

вопрос
Делаю вывод категорий, но во время этого происходят запросы к БД, чтоб избежать множественных запросов, я решил внедрить кеш DLE. Посмотрел на функции create_cache,dle_cache,clear_cache, попытался их использовать, но ничего не получилось.

вот например пытаюсь создать кеш в init.php:
create_cache("my_cache", "Текст модуля", $config['skin'], false);

но кеш не записывается.

Подскажите пожалуйста что я делал не так.

Ответил: ravchik


не лучше делать кэширование в самом модуле?
$mymod = dle_cache('mymod', $config['skin']); // проверяем кэш
if( !$mymod) { //если кэш пустой, то...
    код модуля...
    $mymod = ...    
    create_cache('mymod', $mymod, $config['skin'] ); // кэшируем
}
echo $mymod; // отображаем...

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

ravchik
66

375 | 123

ravchik - 30 октября 2014 20:12 - Юзер

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

vk_159926832
206 | 5

vk_159926832 - 31 октября 2014 12:51 - Юзер

Модуль расположен непосредственно в INIT.PHP но можно вынести его и в файл.

ravchik
66

375 | 123

ravchik - 31 октября 2014 13:30 - Юзер

Не просто можно, но и нужно вынести в отдельный модуль, будет меньше проблем при обновлении движка.

vk_159926832
206 | 5

vk_159926832 - 31 октября 2014 16:47 - Юзер

А где-нибудь пишут, что изменили в коде движка? Вот изменения в шаблонах пишут например.

ravchik
66

375 | 123

ravchik - 31 октября 2014 16:56 - Юзер

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

vk_159926832
206 | 5

vk_159926832 - 5 ноября 2014 09:49 - Юзер

Вывел модуль в отдельный файл, но кеширование не происходит:


$cat_bottom = dle_cache('categories_bottom', $config['skin']);

if( !$cat_bottom) {
//Работает скрипт
    create_cache('categories_bottom', $cat_bottom, $config['skin'] );
}

$tpl->set ( '{cat_all_bottom}', $cat_bottom);


Что не так?
даже при простом использовании create_cache() - ничего не происходит. DLE 10.3 Localhost UTF-8.

ravchik
66

375 | 123

ravchik - 5 ноября 2014 09:59 - Юзер

Попробуйте так
$cat_bottom = dle_cache('categories_bottom', $config['skin']);

if( !$cat_bottom) {
//Работает скрипт
    $catbottom = "..."; // Результат работы скрипта, его и записываем в кэш
    create_cache('categories_bottom', $catbottom, $config['skin'] );
}
$tpl->set ( '{cat_all_bottom}', $cat_bottom);

ravchik
66

375 | 123

ravchik - 5 ноября 2014 10:29 - Юзер

Если вы выводите модуль так {include file=...}, то замените
$tpl->set ( '{cat_all_bottom}', $cat_bottom);
на
echo $cat_bottom;

vk_159926832
206 | 5

vk_159926832 - 5 ноября 2014 13:58 - Юзер

Нет нет нет, инклужу его непосредственно в INIT.PHP

include_once ENGINE_DIR . '/modules/cat_bottom.php';

FastFud
50

1599 | 588

FastFud - 5 ноября 2014 13:31 - Юзер

$is_change = false;
if ($config['allow_cache'] != "yes") { $config['allow_cache'] = "yes"; $is_change = true;}
$cat_bottom = dle_cache('categories_bottom', $config['skin']);

if( !$cat_bottom) {
//Работает скрипт
    create_cache('categories_bottom', $cat_bottom, $config['skin'] );
}
$tpl->set ( '{cat_all_bottom}', $cat_bottom);

vk_159926832
206 | 5

vk_159926832 - 6 ноября 2014 13:33 - Юзер

Вот ваш способ очень помог. У меня просто кеш выключен был XD Спасибо!

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

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