Same name and namespace in other branches
  1. 4.6.x includes/bootstrap.inc \cache_clear_all()
  2. 5.x includes/cache.inc \cache_clear_all()
  3. 6.x includes/cache.inc \cache_clear_all()
  4. 6.x includes/cache-install.inc \cache_clear_all()
  5. 7.x includes/cache.inc \cache_clear_all()

Expire data from the cache.

Parameters

$cid: If set, the cache ID to delete. Otherwise, all cache entries that can expire are deleted.

$wildcard: If set to true, the $cid is treated as a substring to match rather than a complete ID.

29 calls to cache_clear_all()
block_admin_configure_submit in modules/block.module
block_admin_display_submit in modules/block.module
Process main block administration form submission.
block_box_delete_confirm_submit in modules/block.module
Deletion of custom blocks.
comment_admin_overview_submit in modules/comment.module
Execute the chosen 'Update option' on the selected comments, such as publishing, unpublishing or deleting.
comment_confirm_delete_submit in modules/comment.module

... See full list

File

includes/bootstrap.inc, line 395
Functions that need to be loaded on every Drupal request.

Code

function cache_clear_all($cid = NULL, $wildcard = false) {
  global $user;
  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 {cache} 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 {cache} WHERE expire != %d AND expire < %d", CACHE_PERMANENT, time());
    }
  }
  else {
    if ($wildcard) {
      db_query("DELETE FROM {cache} WHERE cid LIKE '%%%s%%'", $cid);
    }
    else {
      db_query("DELETE FROM {cache} WHERE cid = '%s'", $cid);
    }
  }
}