Поставил computed field. Настроил вывод данных.
Нужно чтоб данные выводились постоянно обновленные. Они же прописываются в кэше и выдается постоянно устаревшая инфа.
Подскажите - где можно настроить кэширование полей (и можно ли без правки модуля)?
Уже час прошел, а кэш не обновляется.
Комментарии
Отключить кеш у Drupal или Views. Если нужно обновление как у аукционных сайтов, то тут поможет js обновление...
Или использовать такие модули, как http://drupal.org/project/cacheexclude
да у меня кеш как раз пока не включен. Но все равно ведь друпал кеширует записи контента в cache_content. Пробовал уже и включить кеш с 1 минутой, но и так обновления не происходит. Бред какой то. с Views это модуль работает вообще бездарно. Кто его писал - руки бы поотрывать.
Интересно то, что в таблице cache_content есть столбец expire. Там везде стоит значение 0. если его руками в БД исправить на 1 (к примеру), происходит обновление, но значение возвращается в 0. Вот тут думаю нужно копать.
Спасибо за наводку на модуль cacheexclude, ща посмотрю что он делает.
Если не поможет - придется модуль править с использованием столбца expire![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
я конечно удивлен, но модуль не исключает из кеша записи выводимые в строках computed field.![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Придется сейчас все таки модуль разбирать.
Ну я тогда бы сделал ajax запросом.
Nikit, спасибо за участие! У меня первая мысль была об ajax
Но в таком случае придется передавать в открытую путь к исполняемому файлу пхп и необходимые параметры в открытом виде. А мне как раз нельзя этого пказывать юзерам. нужно выполнять все эти операции только на стороне сервера.
Нашел вчера решение. Очень мало информации по вопросу кэша. Трудно было найти что то конкретное. Помогла вот эта статья
http://amgrade.net/blog/keshirovanie-v-drupal
Отвечает за эту операцию функция CCK модуля в файле content.module - function content_load(&$node)
И вот самая последняя операция (запись в кэш):
cache_set($cid, $default_additions, content_cache_tablename());
не учитывает ввод времени жизни кэша.![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Поэтому нужно добавить самому.
cache_set($cid, $default_additions, content_cache_tablename(), time() + 360);
Так у нас будут записываться данные в кэш с временем жизни 6 минут.
Но и в таком случае - этого не достаточно. Ввиду уникальности друпаловской работы с кэшем - для полного обновления еще необходимо запустить крон. Вот в таком случае кеш обновится полностью.
Что- что - но реально в друпале работа с кешем дошла до маразма. Жал, но пока альтернатив Друпалу сейчас нет, так бы конечно рассмотрел вопрос о смене цмс-ки.
В общем по сути вопроса - апи друпала не изучал. Поэтому пока отдельным модулем переопределить функцию content_load не получилось. Буду просто править модуль content.module .![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Осталось внести условия для очистки кэша только нужных строк
PS![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Можно еще использовать модуль dynamicfield-6.x-1.0. В этом случае результаты выполнения пхп-кода вообще не будут попадать в кэш. Но я подумал что для производительности в моей задаче все таки лучше кэшировать результат на 12 часов.
Не очень хорошее решение - модить cck, ведь теперь все cck поля будут кещированы всего на 6 часов, а ведь обычно они никогда не меняются. Лучше создай свой модуль, и подгружай только свое поле по своему кешу в hook_nodapi.
там будет путь к друпал, не к php, опасности никакой, если всё правильно сделать...Nikit, Спасибо за подсказку по поводу hook_nodapi! Я пытался через него как раз и делать. но не получилось. Придется все таки немного вникнуть в друпаловский апи
так же придется расширить знания в ajax
Постараюсь это все объединить вместе ![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Тоже столкнулся с проблемой кеширования модуля Computed Field, постоянно показывает старые значения из кеша.
Да уж, в этой ветке так и не указали конкретного простого решения.
Мне пришлось сделать сложно и криво, но работает:
через скрипт MySQL перезаполняю значения вычисляемого поля,
удаляю строки из таблицы кеша Drupal (delete from cache_field where cid like 'field:node:%'),
добавил скрипт в cron с нужной периодичностью.
решение тут https://drupal.org/comment/8168741#comment-8168741
мне помогло