X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fcache.php;h=3a18fe2a5a45b237a3a3b605d3a79a082786bbaf;hb=17514e0d684edccb41d16a452bf60debdc276fab;hp=3c8a3f7138b4d7d5c1da52fe86ae99b62283bec8;hpb=4bee1859be5fbf46ecc19728a908e31b4e9b09b6;p=friendica.git diff --git a/include/cache.php b/include/cache.php index 3c8a3f7138..3a18fe2a5a 100644 --- a/include/cache.php +++ b/include/cache.php @@ -2,39 +2,70 @@ /** * cache api */ - + class Cache { - public static function get($key){ + public static function get($key) { + /*if (function_exists("apc_fetch") AND function_exists("apc_exists")) + if (apc_exists($key)) + return(apc_fetch($key));*/ + $r = q("SELECT `v` FROM `cache` WHERE `k`='%s' limit 1", dbesc($key) ); - - if (count($r)) return $r[0]['v']; + + if (count($r)) { + /*if (function_exists("apc_store")) + apc_store($key, $r[0]['v'], 600);*/ + + return $r[0]['v']; + } return null; } - + public static function set($key,$value) { - $r = q("SELECT * FROM `cache` WHERE `k`='%s' limit 1", - dbesc($key) - ); - if(count($r)) { - q("UPDATE `cache` SET `v` = '%s', `updated = '%s' WHERE `k` = '%s' limit 1", - dbesc($value), - dbesc(datetime_convert()), - dbesc($key)); - } - else { - q("INSERT INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')", + + q("REPLACE INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')", dbesc($key), dbesc($value), dbesc(datetime_convert())); - } + + /*if (function_exists("apc_store")) + apc_store($key, $value, 600);*/ + } - + + +/* + * + * Leaving this legacy code temporaily to see how REPLACE fares + * as opposed to non-atomic checks when faced with fast moving key duplication. + * As a MySQL extension it isn't portable, but we're not yet very portable. + */ + +/* + * $r = q("SELECT * FROM `cache` WHERE `k`='%s' limit 1", + * dbesc($key) + * ); + * if(count($r)) { + * q("UPDATE `cache` SET `v` = '%s', `updated = '%s' WHERE `k` = '%s'", + * dbesc($value), + * dbesc(datetime_convert()), + * dbesc($key)); + * } + * else { + * q("INSERT INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')", + * dbesc($key), + * dbesc($value), + * dbesc(datetime_convert())); + * } + * } + */ + + public static function clear(){ q("DELETE FROM `cache` WHERE `updated` < '%s'", - dbesc(datetime_convert('UTC','UTC',"now - 30 days"))); + dbesc(datetime_convert('UTC','UTC',"now - 30 days"))); } - + } - +