function cache_clear_all

You are here

7 cache.inc cache_clear_all($cid = NULL, $bin = NULL, $wildcard = FALSE)
4.6 bootstrap.inc cache_clear_all($cid = NULL, $wildcard = false)
4.7 bootstrap.inc cache_clear_all($cid = NULL, $wildcard = false)
5 cache.inc cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE)
6 cache.inc cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE)
6 cache-install.inc cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE)

Expires data from the cache.

If called with the arguments $cid and $bin set to NULL or omitted, then expirable entries will be cleared from the cache_page and cache_block bins, and the $wildcard argument is ignored.

Parameters

$cid: If set, the cache ID or an array of cache IDs. Otherwise, all cache entries that can expire are deleted. The $wildcard argument will be ignored if set to NULL.

$bin: If set, the cache bin to delete from. Mandatory argument if $cid is set.

$wildcard: If TRUE, the $cid argument must contain a string value and cache IDs starting with $cid are deleted in addition to the exact cache ID specified by $cid. If $wildcard is TRUE and $cid is '*', the entire cache is emptied.

79 calls to cache_clear_all()
2 string references to 'cache_clear_all'
menu_cache_clear in includes/menu.inc
Clears the cached cached data for a single named menu.
_menu_clear_page_cache in includes/menu.inc
Clears the page and block caches at most twice per page load.

File

includes/cache.inc, line 155
Functions and interfaces for cache handling.

Code

function cache_clear_all($cid = NULL, $bin = NULL, $wildcard = FALSE) {
  if (!isset($cid) && !isset($bin)) {
    // Clear the block cache first, so stale data will
    // not end up in the page cache.
    if (module_exists('block')) {
      cache_clear_all(NULL, 'cache_block');
    }
    cache_clear_all(NULL, 'cache_page');
    return;
  }
  return _cache_get_object($bin)->clear($cid, $wildcard);
}

Comments

The $bin is the name of the particular database cache table. So, for example:
cache_clear_all('field:node:' . $node->nid, 'cache_field');

I built a custom module that allows the user to upload an image and then clears the cache to display the image on the page. the process takes a very long time, as the image must be uploaded then the cache cleared. right now I am using cache_clear_all but is there a way to only clear the cache for images?

node_save($node);
unset($node);
$GLOBALS['conf']['cache'] = 0;
drupal_flush_all_caches();
cache_clear_all(NULL, 'cache_page', '*');

If you'd like to clear an entire cache bin for database caches, regardless of the 'expire' value for a cached object, you need to do something like:

<?php
cache_clear_all
('*', 'cache_my_module_bin', TRUE);
?>

Providing an '*' for the first parameter tells the database cache interface's clear() method to truncate the particular cache bin.