X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fcache.php;h=e8af8f9de119ef543415f2b93523790ca9e6aa87;hb=0c310db23d253e489c27b80f99aeaaa06275fea6;hp=45938dddf86b736d22b45bf8dcd849e4efb0f821;hpb=3463a442badb575f024a090f371d4f75c89d9b78;p=friendica.git diff --git a/include/cache.php b/include/cache.php index 45938dddf8..e8af8f9de1 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; @@ -99,8 +104,16 @@ class Cache { dbesc($key) ); - if (count($r)) { - return $r[0]['v']; + if (dbm::is_result($r)) { + $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; @@ -108,7 +121,9 @@ class Cache { /** * @brief Put data in the cache according to the key - * + * + * The input $value can have multiple formats. + * * @param string $key The key to the cached data * @param mixed $valie The value that is about to be stored * @param integer $duration The cache lifespan @@ -126,7 +141,7 @@ class Cache { /// @todo store the cache data in the same way like the config data q("REPLACE INTO `cache` (`k`,`v`,`expire_mode`,`updated`) VALUES ('%s','%s',%d,'%s')", dbesc($key), - dbesc($value), + dbesc(serialize($value)), intval($duration), dbesc(datetime_convert())); }