diff --git a/boot.php b/boot.php index 7fb4591411..7451891fef 100644 --- a/boot.php +++ b/boot.php @@ -19,7 +19,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_CODENAME', 'Lily of the valley'); define ( 'FRIENDICA_VERSION', '3.4.1' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1187 ); +define ( 'DB_UPDATE_VERSION', 1188 ); define ( 'EOL', "
\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); @@ -84,6 +84,15 @@ define ( 'LOGGER_DEBUG', 2 ); define ( 'LOGGER_DATA', 3 ); define ( 'LOGGER_ALL', 4 ); +/** + * cache levels + */ + +define ( 'CACHE_MONTH', 0 ); +define ( 'CACHE_WEEK', 1 ); +define ( 'CACHE_DAY', 2 ); +define ( 'CACHE_HOUR', 3 ); + /** * registration policies */ diff --git a/include/Scrape.php b/include/Scrape.php index 83c099769d..a2bf5ee0aa 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -819,7 +819,7 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) { } } - Cache::set("probe_url:".$mode.":".$url,serialize($result)); + Cache::set("probe_url:".$mode.":".$url,serialize($result), CACHE_DAY); return $result; } diff --git a/include/cache.php b/include/cache.php index 3a18fe2a5a..d0b0dfafda 100644 --- a/include/cache.php +++ b/include/cache.php @@ -5,33 +5,25 @@ class Cache { 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)) { - /*if (function_exists("apc_store")) - apc_store($key, $r[0]['v'], 600);*/ - + if (count($r)) return $r[0]['v']; - } + return null; } - public static function set($key,$value) { + public static function set($key,$value, $duration = CACHE_MONTH) { - q("REPLACE INTO `cache` (`k`,`v`,`updated`) VALUES ('%s','%s','%s')", + q("REPLACE INTO `cache` (`k`,`v`,`expire_mode`,`updated`) VALUES ('%s','%s',%d,'%s')", dbesc($key), dbesc($value), + intval($duration), dbesc(datetime_convert())); - /*if (function_exists("apc_store")) - apc_store($key, $value, 600);*/ - } @@ -63,8 +55,17 @@ public static function clear(){ - q("DELETE FROM `cache` WHERE `updated` < '%s'", - dbesc(datetime_convert('UTC','UTC',"now - 30 days"))); + q("DELETE FROM `cache` WHERE `updated` < '%s' AND `expire_mode` = %d", + dbesc(datetime_convert('UTC','UTC',"now - 30 days")), intval(CACHE_MONTH)); + + q("DELETE FROM `cache` WHERE `updated` < '%s' AND `expire_mode` = %d", + dbesc(datetime_convert('UTC','UTC',"now - 7 days")), intval(CACHE_WEEK)); + + q("DELETE FROM `cache` WHERE `updated` < '%s' AND `expire_mode` = %d", + dbesc(datetime_convert('UTC','UTC',"now - 1 days")), intval(CACHE_DAY)); + + q("DELETE FROM `cache` WHERE `updated` < '%s' AND `expire_mode` = %d", + dbesc(datetime_convert('UTC','UTC',"now - 1 hours")), intval(CACHE_HOUR)); } } diff --git a/include/dbstructure.php b/include/dbstructure.php index 2370b01bec..2b1ee84fda 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -364,6 +364,7 @@ function db_definition() { "fields" => array( "k" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"), "v" => array("type" => "text", "not null" => "1"), + "expire_mode" => array("type" => "int(11)", "not null" => "1", "default" => "0"), "updated" => array("type" => "datetime", "not null" => "1", "default" => "0000-00-00 00:00:00"), ), "indexes" => array( diff --git a/include/discover_poco.php b/include/discover_poco.php index 4a17b49279..79958a8849 100644 --- a/include/discover_poco.php +++ b/include/discover_poco.php @@ -183,7 +183,7 @@ function discover_directory($search) { poco_check($data["url"], $data["name"], $data["network"], $data["photo"], "", "", "", $jj->tags, $data["addr"], "", 0); } } - Cache::set("dirsearch:".$search, time()); + Cache::set("dirsearch:".$search, time(), CACHE_DAY); } if (array_search(__file__,get_included_files())===0){ diff --git a/include/items.php b/include/items.php index a2b2a0197b..f15e2a1fc5 100644 --- a/include/items.php +++ b/include/items.php @@ -969,7 +969,7 @@ function query_page_info($url, $no_photos = false, $photo = "", $keywords = fals $data = Cache::get("parse_url:".$url); if (is_null($data)){ $data = parseurl_getsiteinfo($url, true); - Cache::set("parse_url:".$url,serialize($data)); + Cache::set("parse_url:".$url,serialize($data), CACHE_DAY); } else $data = unserialize($data); diff --git a/include/oembed.php b/include/oembed.php index b32cb512be..aec92bfa04 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -73,7 +73,7 @@ function oembed_fetch_url($embedurl, $no_rich_type = false){ if ($txt[0]!="{") $txt='{"type":"error"}'; //save in cache - Cache::set($a->videowidth . $embedurl,$txt); + Cache::set($a->videowidth . $embedurl,$txt, CACHE_DAY); } diff --git a/mod/parse_url.php b/mod/parse_url.php index 50c6a15b0e..97eebb89ab 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -60,7 +60,7 @@ function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = tr $data = parseurl_getsiteinfo($url, $no_guessing, $do_oembed); - Cache::set("parse_url:".$no_guessing.":".$do_oembed.":".$url,serialize($data)); + Cache::set("parse_url:".$no_guessing.":".$do_oembed.":".$url,serialize($data), CACHE_DAY); return $data; } diff --git a/update.php b/update.php index a2c8674028..761da7273d 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@