Commit 920babfe authored by Dries's avatar Dries

- Patch #227228 by catch et al: fix a problem with minumum cache lifetime being global.

parent 04b3e8d0
......@@ -18,10 +18,10 @@ function cache_get($cid, $table = 'cache') {
global $user;
// Garbage collection necessary when enforcing a minimum cache lifetime
$cache_flush = variable_get('cache_flush', 0);
$cache_flush = variable_get('cache_flush_' . $table, 0);
if ($cache_flush && ($cache_flush + variable_get('cache_lifetime', 0) <= REQUEST_TIME)) {
// Reset the variable immediately to prevent a meltdown in heavy load situations.
variable_set('cache_flush', 0);
variable_set('cache_flush_' . $table, 0);
// Time to flush old cache data
db_delete($table)
->condition('expire', CACHE_PERMANENT, '<>')
......@@ -165,10 +165,10 @@ function cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE) {
// cached data that was cached before the timestamp.
$user->cache = REQUEST_TIME;
$cache_flush = variable_get('cache_flush', 0);
$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', REQUEST_TIME);
variable_set('cache_flush_' . $table, REQUEST_TIME);
}
elseif (REQUEST_TIME > ($cache_flush + variable_get('cache_lifetime', 0))) {
// Clear the cache for everyone, cache_flush_delay seconds have
......@@ -177,7 +177,7 @@ function cache_clear_all($cid = NULL, $table = NULL, $wildcard = FALSE) {
->condition('expire', CACHE_PERMANENT, '<>')
->condition('expire', REQUEST_TIME, '<')
->execute();
variable_set('cache_flush', 0);
variable_set('cache_flush_' . $table, 0);
}
}
else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment