|
|
@@ -0,0 +1,63 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+define("DATA_DIR", "../data/");
|
|
|
+define("DATA_VERSION", 1);
|
|
|
+
|
|
|
+require_once("CacheFlammenkuchenManager.php");
|
|
|
+require_once("CacheVersion.php");
|
|
|
+require_once("CacheIndex.php");
|
|
|
+
|
|
|
+class CacheController
|
|
|
+{
|
|
|
+ private static $cacheVersion = null;
|
|
|
+ private static $cacheIndex = null;
|
|
|
+
|
|
|
+ static function check()
|
|
|
+ {
|
|
|
+ if (self::$cacheVersion !== null)
|
|
|
+ return;
|
|
|
+ self::$cacheVersion = new CacheVersion(apcu_fetch("CACHEVERSION"));
|
|
|
+ self::$cacheIndex = new CacheIndex(apcu_fetch("CACHEINDEX"));
|
|
|
+ if (self::$cacheVersion->needWipe())
|
|
|
+ self::wipe();
|
|
|
+ else if (self::$cacheVersion->needRefresh())
|
|
|
+ self::refresh();
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function getCacheIndex()
|
|
|
+ {
|
|
|
+ echo "CC: get CI\n";
|
|
|
+ if (self::$cacheIndex === null)
|
|
|
+ {
|
|
|
+ self::check();
|
|
|
+ if (self::$cacheIndex->isInvalid())
|
|
|
+ {
|
|
|
+ echo "CC: rebuild CI\n";
|
|
|
+ self::$cacheIndex = CacheIndex::rebuild();
|
|
|
+ foreach (self::$cacheIndex->getData() as $yymmdd)
|
|
|
+ CacheFlammenkuchenManager::setExist($yymmdd);
|
|
|
+ apcu_store("CACHEINDEX", self::$cacheIndex->getData());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return self::$cacheIndex;
|
|
|
+ }
|
|
|
+
|
|
|
+ protected static function wipe()
|
|
|
+ {
|
|
|
+ echo "CC: wipe\n";
|
|
|
+ self::$cacheVersion = CacheVersion::rebuild();
|
|
|
+ self::$cacheIndex = CacheIndex::rebuild();
|
|
|
+ apcu_store("CACHEINDEX", self::$cacheIndex->getData());
|
|
|
+ apcu_store("CACHEVERSION", self::$cacheVersion->getData());
|
|
|
+ foreach (self::$cacheIndex->getData() as $yymmdd)
|
|
|
+ CacheFlammenkuchenManager::setExist($yymmdd);
|
|
|
+ // TODO
|
|
|
+ }
|
|
|
+
|
|
|
+ protected static function refresh()
|
|
|
+ {
|
|
|
+ echo "CC: refresh\n";
|
|
|
+ // TODO
|
|
|
+ }
|
|
|
+}
|
|
|
+
|