function cache_clear_all in Flush page cache 6
Expire data from the cache. If called without arguments, expirable entries will be cleared from the cache_page and cache_block tables.
Parameters
$cid: If set, the cache ID to delete. Otherwise, all cache entries that can expire are deleted.
$table: If set, the table $table to delete from. Mandatory argument if $cid is set.
$wildcard: If $wildcard is TRUE, cache IDs starting with $cid are deleted in addition to the exact cache ID specified by $cid. If $wildcard is TRUE and $cid is '*' then the entire table $table is emptied.
4 calls to cache_clear_all()
- flush_page_cache_footer in ./
flush_page_cache.module - Implementation of hook_footer().
- flush_page_cache_init in ./
flush_page_cache.module - Implementation of hook_init().
- flush_page_cache_test_object_cache_disabled in ./
flush_page_cache.module - Test that the object cache is being correctly disabled and flushed.
- flush_page_cache_uninstall in ./
flush_page_cache.install - Implementation of hook_uninstall().
File
- ./
flush_page_cache.cache.inc, line 137
Code
function cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE) {
global $user;
if (!isset($cid) && !isset($table)) {
// Clear the block cache first, so stale data will
// not end up in the page cache.
cache_clear_all(NULL, 'cache_block');
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_' . $table, 0);
if ($cache_flush == 0) {
// This is the first request to clear the cache, start a timer.
variable_set('cache_flush_' . $table, time());
}
else {
if (time() > $cache_flush + variable_get('cache_lifetime', 0)) {
// Clear the cache for everyone, cache_lifetime 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_' . $table, 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("TRUNCATE TABLE {" . $table . "}");
}
else {
db_query("DELETE FROM {" . $table . "} WHERE cid LIKE '%s%%'", $cid);
}
}
else {
db_query("DELETE FROM {" . $table . "} WHERE cid = '%s'", $cid);
}
}
}