Кэширование данных в собственную таблицу

В друпале по умолчанию кэш разделён на несколько таблиц, это — cache, cache_block, cache_filter, cache_form, cache_menu, cache_page и cache_update. Из названий понятно для чего они предназначены. Для того, чтобы хранить данные в собственной таблице и при этом пользоваться функциями cache_set / cache_get, достаточно в .install файле вашего модуля реализовать соответствующим образом хук hook_schema():
/**
 * Реализация hook_schema()
 */
function mymodule_schema() {
  $schema['cache_mycache'] = drupal_get_schema_unprocessed('system', 'cache');
  $schema['cache_mycache']['description'] = 'Кэш-таблица под мои данные';
  return $schema;
}
 
/**
 * Реализация hook_install()
 */
function mymodule_install() {
  drupal_install_schema('mymodule');
}
 
/**
 * Реализация hook_uninstall()
 */
function mymodule_uninstall() {
  drupal_uninstall_schema('mymodule');
}

Плюс, реализовать в основном файле модуля хук hook_flush_caches(), для включения механизма очистки таблицы от старых данных:

/**
 * Реализация hook_flush_caches()
 */
function mymodule_flush_caches() {
  return array('cache_mycache');
}

После этого в коде можно писать:

// записываем в кэш на 1 день
cache_set('some-cid', 'some-data', 'cache_mycache', time() + 60*60*24);
 
// или записываем в кэш до первой очистки
cache_set('some-cid', 'some-data', 'cache_mycache');
 
// читаем из кэша
$data = cache_get('some-cid', 'cache_mycache');

Написанное актуально для
Drupal 6.x
Теги:
кэширование, работа с бд
Добавлено: 26 Июля 2018 21:58:04 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...