cache_clear_all
includes/cache.inc, строка 120
- Версии
- 5 – 6
cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE)
Очищает кэш. Если вызывается без аргументов, то очищаются таблицы с кэшами страниц и блоков.
Параметры
$cid
ID кэша для очистки. Если параметр не установлен, очищаются все записи кэша с истекшим сроком.
$table
Таблица для очистки. Обязательный параметр, если установлен параметр $cid
.
$wildcard
Если установлено в TRUE
, $cid
используется как подстрока, соответствующая началу искомого ID кеша (т.е. 'photo'
будет соответствовать 'photo_settings'
, 'photoset'
и т.п.). Если этот параметр установлен как '*'
, то таблица кеша $table
будет полностью очищена.
Код
<?php
function cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE) {
global $user;
if (!isset($cid) && !isset($table)) {
cache_clear_all(NULL, 'cache_page');
return;
}
if (empty($cid)) {
if (variable_get('cache_lifetime', 0)) {
// We store the time in the current user's $user->cache variable which
// will be saved into the sessions table by sess_write(). We then
// simulate that the cache was flushed for this user by not returning
// cached data that was cached before the timestamp.
$user->cache = time();
$cache_flush = variable_get('cache_flush', 0);
if ($cache_flush == 0) {
// This is the first request to clear the cache, start a timer.
variable_set('cache_flush', time());
}
else if (time() > ($cache_flush + variable_get('cache_lifetime', 0))) {
// Clear the cache for everyone, cache_flush_delay seconds have
// passed since the first request to clear the cache.
db_query("DELETE FROM {". $table. "} WHERE expire != %d AND expire < %d", CACHE_PERMANENT, time());
variable_set('cache_flush', 0);
}
}
else {
// No minimum cache lifetime, flush all temporary cache entries now.
db_query("DELETE FROM {". $table. "} WHERE expire != %d AND expire < %d", CACHE_PERMANENT, time());
}
}
else {
if ($wildcard) {
if ($cid == '*') {
db_query("DELETE FROM {". $table. "}");
}
else {
db_query("DELETE FROM {". $table. "} WHERE cid LIKE '%s%%'", $cid);
}
}
else {
db_query("DELETE FROM {". $table. "} WHERE cid = '%s'", $cid);
}
}
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии