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

Как реализовать кэширование для модуля?


     22.04.2014    Общие вопросы, Модули, MySQL    1364

вопрос
Как реализовать кэширование в модуле, если в модуле такие строки:


$sql_result = $db->query( $sql_request );
$found_result = $db->num_rows( $sql_result );
$result_count = $db->super_query( "SELECT COUNT(*) as count $sql_from $where" );
$count_result = $result_count['count'];

$tpl->load_template( '/personaj.tpl' );
$build_navigation = false;
include (ENGINE_DIR . '/modules/show.custom.php');

$tpl->result['content'] = str_ireplace( '[personaj]', '', $tpl->result['content'] );
$tpl->result['content'] = str_ireplace( '[/personaj]', '', $tpl->result['content'] );
if( $config['files_allow'] )
if( strpos( $tpl->result['content'], "[attachment=" ) !== false ) {
$tpl->result['content'] = show_attach( $tpl->result['content'], $attachments );
}


Я так понял выборка из бд передается в show.custom.php, чтобы был наложен шаблон на все строки выборки. А как сделать чтобы модуль он создавал кэш в данном случае?
Спасибо.

Ответа пока нет


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

Attyla
72

243 | 128

Attyla - 22 апреля 2014 12:18 - Юзер

Для тега {custom} есть же кэширование, как ее включить и для этого модуля?

vitnet
218

2172 | 930

vitnet - 22 апреля 2014 21:51 - Эксперт

Цитата: Attyla
Для тега {custom} есть же кеширование

engine/modules/functions.php
function custom_print( $matches=array() ) {
....
}

Attyla
72

243 | 128

Attyla - 22 апреля 2014 22:18 - Юзер

Не совсем понял, что вы хотите сказать...

Я сделал по этому принципу https://dle-faq.ru/faq/phpquest/5870-keshirovanie-dle.html, кэш создается, но не читается.

мой код



// Тут формируется $sql_request

$tpl->result['content'] = dle_cache('news_'.md5( $sql_request ));
if( ! $tpl->result['content']) {

    $sql_result = $db->query( $sql_request );
    $found_result = $db->num_rows( $sql_result );
    $result_count = $db->super_query( "SELECT COUNT(*) as count $sql_from $where" );
    $count_result = $result_count['count'];
    $tpl->load_template( '/personaj.tpl' );
    $build_navigation = false;
    include (ENGINE_DIR . '/modules/show.custom.php');
    $tpl->result['content'] = str_ireplace( '[personaj]', '', $tpl->result['content'] );
    $tpl->result['content'] = str_ireplace( '[/personaj]', '', $tpl->result['content'] );
    if( $config['files_allow'] )
    if( strpos( $tpl->result['content'], "[attachment=" ) !== false ) {
    $tpl->result['content'] = show_attach( $tpl->result['content'], $attachments );
    }

    create_cache('news_'.md5( $sql_request ), $tpl->result['content']);
}


Почему кэш не читается?

vitnet
218

2172 | 930

vitnet - 23 апреля 2014 00:03 - Эксперт

А так?

Attyla
72

243 | 128

Attyla - 23 апреля 2014 09:29 - Юзер

Кэш не читался из-за того, что в sql запросе менялось дата каждый раз. Все решил, спасибо. Оба комментария правильны.

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

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