В друпале по умолчанию кэш разделён на несколько таблиц, это — 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