X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fcache.php;h=98799bcf40ff904c70c7b08910b72005b221be63;hb=27b3943cc7a79ad16be45276f4676de22fc38617;hp=b8016ac4574c37ff73b280dd63101adeb04d4aa6;hpb=5459b00499c01bcf450669bcf42798f0cb049bef;p=friendica.git diff --git a/include/cache.php b/include/cache.php index b8016ac457..98799bcf40 100644 --- a/include/cache.php +++ b/include/cache.php @@ -84,9 +84,14 @@ class Cache { $memcache = self::memcache(); if (is_object($memcache)) { // We fetch with the hostname as key to avoid problems with other applications - $value = $memcache->get(get_app()->get_hostname().":".$key); - if (!is_bool($value)) { - return unserialize($value); + $cached = $memcache->get(get_app()->get_hostname().":".$key); + $value = @unserialize($cached); + + // Only return a value if the serialized value is valid. + // We also check if the db entry is a serialized + // boolean 'false' value (which we want to return). + if ($cached === serialize(false) || $value !== false) { + return $value; } return null; @@ -100,7 +105,15 @@ class Cache { ); if (dbm::is_result($r)) { - return unserialize($r[0]['v']); + $cached = $r[0]['v']; + $value = @unserialize($cached); + + // Only return a value if the serialized value is valid. + // We also check if the db entry is a serialized + // boolean 'false' value (which we want to return). + if ($cached === serialize(false) || $value !== false) { + return $value; + } } return null; @@ -173,7 +186,7 @@ class Cache { set_config("system", "cache_cleared_half_hour", time()); } - if (($max_level <= CACHE_QUARTER_HOUR) AND (get_config("system", "cache_cleared_hour")) < time() - self::duration(CACHE_QUARTER_HOUR)) { + if (($max_level <= CACHE_QUARTER_HOUR) AND (get_config("system", "cache_cleared_quarter_hour")) < time() - self::duration(CACHE_QUARTER_HOUR)) { q("DELETE FROM `cache` WHERE `updated` < '%s' AND `expire_mode` = %d", dbesc(datetime_convert('UTC','UTC',"now - 15 minutes")), intval(CACHE_QUARTER_HOUR));