Beispiel #1
0
 /**
  * Saves tracked cached data and clears expired cache
  *
  * @return boolean true if data saved, false if no caches defined
  */
 public static function save()
 {
     if (empty(self::$_cache)) {
         return false;
     }
     foreach (self::$_cached_keys as $key => $arg) {
         if (isset(self::$_storage[$key]) && $arg['track'] == true) {
             self::_saveCache($key, self::$_storage[$key]);
         }
     }
     self::$_cached_keys = array();
     if (self::$_cache_handlers_are_updated == true) {
         self::$_cache->saveHandlers(self::$_cache_handlers);
         self::$_cache_handlers_are_updated = false;
     }
     // Get tags to clear expired cache
     if (!empty(self::$_changed_tables)) {
         $tags = array();
         foreach (self::$_changed_tables as $table => $flag) {
             if (!empty(self::$_cache_handlers[$table])) {
                 $tags = array_merge($tags, array_keys(self::$_cache_handlers[$table]));
             }
         }
         foreach ($tags as $tag) {
             self::del($tag);
         }
         self::$_cache->clear($tags);
         self::$_changed_tables = array();
     }
     return true;
 }
Beispiel #2
0
 /**
  * Saves tracked cached data and clears expired cache
  *
  * @return boolean true if data saved, false if no caches defined
  */
 public static function save()
 {
     /**
      * Hook is being executed before saving cache data to persistent storage and clearing expired cache.
      *
      * @param array $changed_tables List of DB tables that were modified at the runtime.
      * @param array $cached_keys List of registered cache keys.
      */
     fn_set_hook('registry_save_pre', self::$_changed_tables, self::$_cached_keys);
     if (empty(self::$_cache)) {
         return false;
     }
     foreach (self::$_cached_keys as $key => $arg) {
         if (isset(self::$_storage[$key]) && $arg['track'] == true) {
             self::_saveCache($key, self::$_storage[$key]);
         }
     }
     self::$_cached_keys = array();
     if (self::$_cache_handlers_are_updated == true) {
         self::$_cache->saveHandlers(self::$_cache_handlers);
         self::$_cache_handlers_are_updated = false;
     }
     // Get tags to clear expired cache
     if (!empty(self::$_changed_tables)) {
         $tags = array();
         foreach (self::$_changed_tables as $table => $flag) {
             if (!empty(self::$_cache_handlers[$table])) {
                 $tags = array_merge($tags, array_keys(self::$_cache_handlers[$table]));
             }
         }
         foreach ($tags as $tag) {
             self::del($tag);
         }
         self::$_cache->clear($tags);
         self::$_changed_tables = array();
     }
     return true;
 }