cache_set

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

includes/cache-install.inc, строка 17

Версии
5
cache_set($cid, $table = 'cache', $data, $expire = CACHE_PERMANENT, $headers = NULL)
6
cache_set($cid, $data, $table = 'cache', $expire = CACHE_PERMANENT, $headers = NULL)

Сохраняет данные в кэше.

Кэш хранится в 4 таблицах базы. Модули могут создавать свои дополнительные таблицы.

'cache_page': таблица по умолчанию хранит данные для анонимных пользователей. Это единственная таблица, на которую влияют настройки кэширования страниц в администраторском разделе.

'cache_menu': Хранит кэшируемую часть пользовательских меню.

'cache_filter': Хранит фильтрованный контент. Эта таблица периодически очищается от устаревших записей по крону.

'cache': Основная таблица для хранения кэша.

Причины использования нескольких таблиц:

  • таблицы меньшего размера позволяют быстрее совершать выборки и вставки данных
  • мы стараемся хранить быстро изменяющиеся элементы кэша и более статичные в разных таблицах. В результате только быстро меняющиеся таблицы будут требовать частых записей на диск. Более статичные же таблицы будут лучше кэшироваться кэшем запросов MySQL.

Параметры

$cid ID данных для сохранения в кэш.

$data Данные, сохраняемые в кэше. Составные типы данных автоматически сериализуются перед вставкой. Строки хранятся как обычный текст и не сериализуются.

$table Таблица $table для хранения данных. Значения, доступные по умолчанию: 'cache_filter', 'cache_menu', 'cache_page' и 'cache'.

$expire Одно из следующих значений:

  • CACHE_PERMANENT: Указывает, что элемент не может быть удален до тех пор, пока это явно не будет потребовано вызовом функции cache_clear_all() с ID кэша в качестве аргумента.
  • CACHE_TEMPORARY: Указывает, что элемент должен быть удален при следующей общей очистке кэша.
  • Unix timestamp: Указывает, что элемент должен быть сохранен по крайней мере до указанного времени, после чего он начинает вести себя как CACHE_TEMPORARY.
$headers Строка, содержащая HTTP-заголовки ответа для полностью закэшированных страниц.

▾ 11 функции вызывают cache_set()

block_list in modules/block/block.module
Возвращает все блоки в заданном регионе для текущего пользователя.
book_menu_subtree_data in modules/book/book.module
Get the data representing a subtree of the book hierarchy.
check_markup in modules/filter/filter.module
Фильтрует текст с помощью выбранного формата ввода.
drupal_get_schema in includes/common.inc
Возвращает схему определенной таблицы или всей базы данных сайта.
form_set_cache in includes/form.inc
Сохраняет форму в кэше.
locale in modules/locale/locale.module
Provides interface translation services.
menu_tree_all_data in includes/menu.inc
Получить данные структуры, представляющие название дерева меню.
menu_tree_page_data in includes/menu.inc
Get the data structure representing a named menu tree, based on the current page.
page_set_cache in includes/common.inc
Store the current page in the cache.
variable_init in includes/bootstrap.inc
Загружает таблицу "постоянных" переменных.
_theme_save_registry in includes/theme.inc
Write the theme_registry cache into the database.

Код

<?php
function cache_set($cid, $data, $table = 'cache', $expire = CACHE_PERMANENT, $headers = NULL) {
  return;
}
?>

Пользовательские комментарии

Код функции, который приведён выше - заглушка из файла includes/cache-install.inc

Код из includes/cache.inc:

function cache_set($cid, $data, $table = 'cache', $expire = CACHE_PERMANENT, $headers = NULL) {
  $serialized = 0;
  if (is_object($data) || is_array($data)) {
    $data = serialize($data);
    $serialized = 1;
  }
  $created = time();
  db_query("UPDATE {". $table ."} SET data = %b, created = %d, expire = %d, headers = '%s', serialized = %d WHERE cid = '%s'", $data, $created, $expire, $headers, $serialized, $cid);
  if (!db_affected_rows()) {
    @db_query("INSERT INTO {". $table ."} (cid, data, created, expire, headers, serialized) VALUES ('%s', %b, %d, %d, '%s', %d)", $cid, $data, $created, $expire, $headers, $serialized);
  }
}
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему