Skip to main content
5 of 5
improved formatting
avpaderno
  • 97.9k
  • 15
  • 164
  • 284

Cache not clearing on expiry

Using the steps explained on A Beginner's Guide to Caching Data in Drupal 7, I'm storing an array with a specified expiration time.

cache_get() is still returning stale cache, when the expiration time is passed. Even Cron is not deleting the cache entry. (I've checked the cache_block table.)

This is the code I am using.

$out = &drupal_static(__FUNCTION__);
        
if (!isset($out)) {
  if (($cache = cache_get(__FUNCTION__,'cache_block'))) {
    $out = $cache->data;
    dsm("cache returned");
  }
  else {
    // Do something.
    $out = '<ul style="list-style:none;padding-right:20px">' . $out . "</ul>";
    cache_set(__FUNCTION__, $out, 'cache_block', strtotime("23:59:59")+2);
  }
}
    
return $out;

Only "cache clear all" in the Performance tab is clearing this cache entry.

In that article I can read this.

Expired entries will be automatically discarded as they pass that date.

That does not seem to happen, although I've verified that the "expire" value in the cache table is beyond the current time.

I can clear the cache myself, but then cache_get() does not return the "expire" time in the table.

Anything I'm missing here?

user5858
  • 264
  • 1
  • 2
  • 14