/**
  * Force cache cleanup
  *
  * Force a check, if the cache currently exceeds its given size limit. If
  * this is the case this method will start cleaning up the cache.
  *
  * Depending on the used meta data storage and the size of the cache this
  * operation might take some time.
  *
  * @return void
  */
 public static function forceCleanup()
 {
     if (self::$path === null) {
         throw new vcsCacheNotInitializedException();
     }
     self::$metaDataHandler->cleanup(self::$size, self::$cleanupRate);
 }
 /**
  * Construct cache from cache storage root
  *
  * @param string $root
  * @return void
  */
 public function __construct($root)
 {
     parent::__construct($root);
     // Check for existance of meta data storage file
     if (!file_exists($storage = $this->root . '/cacheSize')) {
         file_put_contents($storage, '0');
     }
     $this->storage = $storage;
 }
 /**
  * Construct cache from cache storage root
  * 
  * @param string $root 
  * @return void
  */
 public function __construct($root)
 {
     parent::__construct($root);
     // Check for existance of meta data storage file
     if (!file_exists($dbFile = $this->root . '/metadata.db')) {
         // Create cache directory, if not yet existing
         if (!is_dir($this->root)) {
             mkdir($this->root, 0750, true);
         }
         // Create the table with appropriate indexes, if the table does not
         // yet exist
         $db = new SQLite3($dbFile);
         $db->query('CREATE TABLE metadata (
             path TEXT PRIMARY KEY,
             size NUMERIC,
             accessed NUMERIC
         )');
         $db->query('CREATE INDEX size ON metadata ( size )');
         $db->query('CREATE INDEX accessed ON metadata ( accessed )');
     }
     $this->db = new SQLite3($dbFile);
 }