Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Где я допускаю ошибку в кэше?

Где я допускаю ошибку в кэше?


     22.01.2024    кэш, кэширование    Общие вопросы по PHP, Модули, Хаки, Ламерские вопросы    549

вопрос
Доброго времени суток.
Вот небольшой код для проверки:


Где я допускаю ошибку, по какой причине не сохраняется в кэш запрос или не выводится из него?
Заранее спасибо

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


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

web102
Юзер

web102 - 22 января 2024 15:07 -

Может потому, что вы пытаетесь сохранить массив? Преобразуйте массив в JSON и сохраняйте.

ushkom
Юзер

ushkom - 22 января 2024 15:54 -

Не думаю что в этом дело, если работать с кешем через api, все работает. Сам понять не могу

ushkom
Юзер

ushkom - 22 января 2024 16:25 -

Вот полный код, по какой причине не работает кэш?


ushkom
Юзер

ushkom - 22 января 2024 22:53 -

То есть, мне
$tpl->result['xflist_studija'];
преобразовать в
$xflist_studija = json_encode($tpl->result['xflist_studija']);
а потом подставлять переменную
$xflist_studija
в кэш? Попробовал, эффекта нет, может неправильно понял?

TeraMoune
Эксперт

TeraMoune - 23 января 2024 05:01 -

**********

Тестовый репозиторий установки плагинов: teramoune

ushkom
Юзер

ushkom - 23 января 2024 14:47 -

А нет у вас, случайно, кода какого то модуля, в котором есть преобразование в json, кеш и шаблонизатор, для визуального понимания? Сам хочу разобраться для дальнейшей работы. Спасибо

lutskboy
Эксперт

lutskboy - 23 января 2024 17:23 -

из show.full.php
create_cache ( $cprefix, json_encode($row, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ), $sql_news );


так что в кеш сохраняйте строки а не массив

ushkom
Юзер

ushkom - 24 января 2024 00:53 -

Спасибо за ответ и более менее нормальный образец. Пробовал делать все по аналогии, где я опять ошибся? Буду признателен за объяснение. Спасибо.

lutskboy
Эксперт

lutskboy - 24 января 2024 13:59 -

create_cache ( "modeli", json_encode($result, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ), $config['skin'], true );

$result? по коду вроде $modeli
тут $tpl->compile( 'content' ); а тут $modeli = $tpl->result['modeli'];
если там content то и там должен быть content а не $tpl->result['modeli'];
и там уже тип строка. json_encode ни к чему

ushkom
Юзер

ushkom - 24 января 2024 15:48 -

Да, вчера перетрудился)
Исправил, но все же, кэш не работает, как делало два запроса к базе, так и делает. Пробовал и с json_encode и без него
Сам код, если не сложно, взгляните. Спасибо


ushkom
Юзер

ushkom - 29 января 2024 00:55 -

Кэш перестал работать и в другом плагине, который работал в dle15, думаю ошибка или в версии php или в dle, не могу понять в чем дело.
Код плагина который работал в dle 15 и не работает кэш сейчас:

dj-avtosh
PHP-developer

dj-avtosh - 14 февраля 2024 16:21 -

$tpl->clear();
я думаю должен быть ниже create_cache

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

ushkom
Юзер

ushkom - 14 февраля 2024 17:26 -

Спасибо за ответ. Прописал ниже, все равно, кэш не хочет работать. Дело в том что в dle15 работало все нормально.

ushkom
Юзер

ushkom - 14 февраля 2024 17:50 -

Всем большое спасибо. Разобрался. Может кому пригодится

dj-avtosh
PHP-developer

dj-avtosh - 15 февраля 2024 09:50 -

$tpl->result['topusers'] = [];

while ($row = $db->get_row($sql)) {
    $tpl->result['topusers'][] = $row;
}	

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 15 февраля 2024 09:57 -


<?php

defined('DATALIFEENGINE') || die("Hacking attempt!");

$tpl->result['topusers'] = dle_cache('topusers', $config['skin'], true);

! empty($tpl->result['topusers']) && $tpl->result['topusers'] = json_decode($tpl->result['topusers'], true);

if( !is_array($tpl->result['topusers']) ) {

    $limit = ! empty($limit) && is_scalar($limit) ? (int)$limit : 5;

    $tpl->result['topusers'] = $db->super_query("SELECT * FROM " . PREFIX . "_users WHERE `news_num` > '0' ORDER BY `news_num` DESC LIMIT " . $limit, true);

    $tpl->clear();

	create_cache('topusers', json_encode($tpl->result['topusers'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ), $config['skin'], true);

}



По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

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

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

наверх