cache_set

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

includes/cache.inc, строка 93

Версии
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-заголовки ответа для полностью закэшированных страниц.

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

check_markup in modules/filter/filter.module
Фильтрует текст с помощью выбранного формата ввода.
locale_refresh_cache in modules/locale/locale.module
Refreshes database stored cache of translations.
menu_get_menu in includes/menu.inc
Return the menu data structure.
page_set_cache in includes/common.inc
Store the current page in the cache.
variable_init in includes/bootstrap.inc
Загружает таблицу "постоянных" переменных.

Код

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

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