public function onComponentAdded(Kwf_Component_Event_Component_Added $ev) { $page = $ev->component->getPage(); if ($page) { $cacheId = 'reqHttps-' . $page->componentId; Kwf_Cache_Simple::delete($cacheId); } }
private function _deleteCache($dbId) { foreach (Kwf_Component_Data_Root::getInstance()->getComponentsByDbId($dbId) as $c) { foreach (array('intern', 'external') as $i) { $cacheId = 'articleCategoryCount' . $c->componentId . $i; Kwf_Cache_Simple::delete($cacheId); } } }
public function onComponentAddedOrRemoved(Kwf_Component_Event_Component_Abstract $event) { $cacheId = 'procI-' . $event->component->getPageOrRoot()->componentId; Kwf_Cache_Simple::delete($cacheId); $log = Kwf_Events_Log::getInstance(); if ($log) { $log->log("processInput cache clear componentId=" . $event->component->getPageOrRoot()->componentId, Zend_Log::INFO); } }
public function onRowUpdatesFinished(Kwf_Events_Event_Row_UpdatesFinished $event) { if (count($this->_orExpr->getExpressions())) { $select = new Kwf_Model_Select(); $select->where($this->_orExpr); $rows = Kwf_Component_Cache::getInstance()->getModel('url')->export(Kwf_Model_Abstract::FORMAT_ARRAY, $select); foreach ($rows as $row) { $cacheId = 'url-' . $row['url']; Kwf_Cache_Simple::delete($cacheId); } } }
private function _deleteCache($event) { $page = $event->component->getParentPageOrRoot()->getParentPageOrRoot(); $d = $page; while ($d) { if (Kwc_Abstract::getFlag($d->componentClass, 'subroot') || $d->componentId == 'root') { Kwf_Cache_Simple::delete('kwcMenuMobile-root-' . $d->componentId); break; } else { if ($d->isPage) { Kwf_Cache_Simple::delete('kwcMenuMobile-' . $d->componentId); break; } } $d = $d->parent; } }
public function clean() { $be = Kwf_Cache_Simple::getBackend(); if ($be == 'memcache') { $prefix = Kwf_Cache_Simple::getUniquePrefix() . '-media-'; foreach ($this->_getSecondLevelCache()->getIds() as $id) { Kwf_Cache_Simple::getMemcache()->delete($prefix . $id); } } else { if ($be == 'file') { //use secondlevel cache only } else { foreach ($this->_getSecondLevelCache()->getIds() as $id) { Kwf_Cache_Simple::delete('media-' . $id); } } } $this->_getSecondLevelCache()->clean(); }
public function onFavouriteRemove(Kwf_Events_Event_Row_Abstract $event) { $favourite = $event->row; $cacheIdUser = '******' . $favourite->user_id; $cacheUser = Kwf_Cache_Simple::fetch($cacheIdUser, $success); if ($success) { Kwf_Cache_Simple::delete($cacheIdUser); $key = array_search($favourite->component_id, $cacheUser); unset($cacheUser[$key]); Kwf_Cache_Simple::add($cacheIdUser, $cacheUser); } }
public static function clearCache() { $cacheId = 'acl'; Kwf_Cache_Simple::delete($cacheId); }
public static function dispatchUtils() { if ($_POST['password'] != self::_getHttpPassword()) { throw new Kwf_Exception_AccessDenied(); } $uri = $_SERVER['REQUEST_URI']; $baseUrl = Kwf_Setup::getBaseUrl(); if ($baseUrl && substr($uri, 0, strlen($baseUrl)) == $baseUrl) { $uri = substr($uri, strlen($baseUrl)); } if (substr($uri, 0, 25) == '/kwf/util/apc/clear-cache') { $s = microtime(true); if (isset($_REQUEST['deleteCacheSimple'])) { foreach (explode(',', $_REQUEST['deleteCacheSimple']) as $id) { Kwf_Cache_Simple::delete($id); } } if (isset($_REQUEST['clearCacheSimpleStatic'])) { foreach (explode(',', $_REQUEST['clearCacheSimpleStatic']) as $id) { Kwf_Cache_SimpleStatic::clear($id); } } if (isset($_REQUEST['deleteCacheSimpleStatic'])) { foreach (explode(',', $_REQUEST['deleteCacheSimpleStatic']) as $id) { Kwf_Cache_SimpleStatic::delete($id); } } if (isset($_REQUEST['cacheIds'])) { foreach (explode(',', $_REQUEST['cacheIds']) as $cacheId) { apc_delete($cacheId); } } if (isset($_REQUEST['files']) && function_exists('apc_delete_file')) { foreach (explode(',', $_REQUEST['files']) as $file) { @apc_delete_file($file); } } else { if (isset($_REQUEST['type']) && $_REQUEST['type'] == 'user') { if (extension_loaded('apcu')) { apc_clear_cache(); } else { apc_clear_cache('user'); } } else { if (!extension_loaded('apcu')) { apc_clear_cache('file'); } } } echo 'OK ' . round((microtime(true) - $s) * 1000) . ' ms'; exit; } else { if (substr($uri, 0, 24) == '/kwf/util/apc/save-cache') { $data = unserialize($_REQUEST['data']); if (apc_store($_REQUEST['id'], $data)) { echo 'OK'; } else { echo 'ERROR'; } exit; } else { if (substr($uri, 0, 31) == '/kwf/util/apc/get-counter-value') { $prefix = Kwf_Cache::getUniquePrefix() . 'bench-'; echo apc_fetch($prefix . $_GET['name']); exit; } else { if ($uri == '/kwf/util/apc/stats') { self::stats(); } else { if ($uri == '/kwf/util/apc/iterate') { self::iterate(); } else { if ($uri == '/kwf/util/apc/is-loaded') { if (extension_loaded('apc')) { echo 'OK1'; } else { echo 'OK0'; } exit; } else { if ($uri == '/kwf/util/apc/get-hostname') { echo php_uname('n'); exit; } } } } } } } throw new Kwf_Exception_NotFound(); }
private static function _clearComponentSettingsCache($componentClasses, $setting = null) { Kwf_Component_Abstract::resetSettingsCache(); $settings = Kwf_Component_Settings::_getSettingsCached(); $dependenciesChanged = false; $generatorssChanged = false; $dimensionsChanged = false; $menuConfigChanged = false; foreach ($componentClasses as $c) { Kwf_Component_Settings::$_rebuildingSettings = true; if ($setting) { //a single setting changed $newSettings = $settings[$c]; $newSettings[$setting] = Kwc_Abstract::getSetting($c, $setting); } else { //all settings might have changed $newSettings = Kwf_Component_Settings::_getSettingsIncludingPreComputed($c); } Kwf_Component_Settings::$_rebuildingSettings = false; if ($newSettings['assets'] != $settings[$c]['assets'] || $newSettings['assetsAdmin'] != $settings[$c]['assetsAdmin']) { $dependenciesChanged = true; } if ($newSettings['generators'] != $settings[$c]['generators']) { $generatorssChanged = true; $oldChildComponentClasses = self::_getComponentClassesFromGeneratorsSetting($settings[$c]['generators']); $newChildComponentClasses = self::_getComponentClassesFromGeneratorsSetting($newSettings['generators']); } if (isset($newSettings['dimensions']) && $newSettings['dimensions'] != $settings[$c]['dimensions']) { $dimensionsChanged = true; } if (isset($newSettings['menuConfig']) && $newSettings['menuConfig'] != $settings[$c]['menuConfig']) { $menuConfigChanged = true; } $settings[$c] = $newSettings; } echo "refreshed component settings cache...\n"; if ($dependenciesChanged) { echo "assets changed...\n"; self::_clearAssetsDependencies(); self::_clearAssetsAll(); } $clearCacheSimpleStatic = array('has-', 'cs-', 'flag-', 'componentClasses-', 'recCCGen-', 'genInst-', 'childComponentClasses-'); if ($generatorssChanged) { echo "generators changed...\n"; echo count(Kwc_Abstract::getComponentClasses()) . " component classes (previously)\n"; $m = Kwf_Component_Cache::getInstance()->getModel('url'); foreach ($m->getRows() as $r) { Kwf_Cache_Simple::delete('url-' . $r->url); $r->delete(); } foreach ($newChildComponentClasses as $cmpClass) { if (!in_array($cmpClass, Kwc_Abstract::getComponentClasses())) { self::_loadSettingsRecursive($settings, $cmpClass); } } $removedComponentClasses = array_diff($oldChildComponentClasses, $newChildComponentClasses); foreach ($removedComponentClasses as $removedCls) { self::_removeSettingsRecursive($settings, $removedCls); } } file_put_contents('build/component/settings', serialize($settings)); echo "cleared component settings apc cache...\n"; if (Kwf_Util_Apc::isAvailable()) { self::_clearApcCache(array('clearCacheSimpleStatic' => $clearCacheSimpleStatic)); } else { foreach ($clearCacheSimpleStatic as $i) { Kwf_Cache_SimpleStatic::clear($i); } } echo "\n"; if ($dimensionsChanged) { echo "dimensions changed...\n"; $clearCacheSimple = array(); foreach ($componentClasses as $c) { $idPrefix = str_replace(array('.', '>'), array('___', '____'), $c) . '_'; $clearCacheSimple[] = 'media-output-' . $idPrefix; $clearCacheSimple[] = 'media-output-mtime-' . $idPrefix; foreach (glob('cache/media/' . $idPrefix . '*') as $f) { echo $f . " [DELETED]\n"; unlink($f); } } Kwf_Cache_Simple::delete($clearCacheSimple); echo "cleared media cache...\n"; } if ($menuConfigChanged) { echo "menu config changed...\n"; Kwf_Acl::clearCache(); echo "cleared acl cache...\n"; } $dependentComponentClasses = array(); foreach (Kwc_Abstract::getComponentClasses() as $c) { if (strpos($c, '.') !== false) { $params = substr($c, strpos($c, '.') + 1); foreach ($componentClasses as $i) { if (strpos($params, $i) !== false) { $dependentComponentClasses[] = $c; } } } } if ($dependentComponentClasses) { echo "dependent componentClasses: " . count($dependentComponentClasses) . " (Cc, Trl)\n"; echo implode(', ', $dependentComponentClasses) . "\n"; self::_clearComponentSettingsCache($dependentComponentClasses, $setting); } }
private function _duplicatePageRecursive($parentSourceId, $parentTargetId, $childId, Zend_ProgressBar $progressBar = null) { $pd = $this->_getPageData($childId); if ($progressBar) { $progressBar->next(1, trlKwf("Pasting {0}", $pd['name'])); } $data = array(); $data['parent_id'] = Kwf_Component_Data_Root::getInstance()->getComponentById($parentTargetId, array('ignoreVisible' => true))->dbId; $sourceRow = $this->getModel()->getRow($childId); if ($sourceRow->is_home) { //copy is_home only if target has no home yet $t = Kwf_Component_Data_Root::getInstance()->getComponentById($parentTargetId, array('ignoreVisible' => true)); while ($t && !Kwc_Abstract::getFlag($t->componentClass, 'hasHome')) { $t = $t->parent; } if (!$t || $t->getChildPage(array('home' => true, 'ignoreVisible' => true), array())) { $data['is_home'] = false; } } $newRow = $sourceRow->duplicate($data); //clear cache in here as while duplicating the modelobserver might be disabled Kwf_Cache_Simple::delete('pcIds-' . $newRow->parent_id); //ids are numeric, we don't have to use parentSource/parentTarget $source = Kwf_Component_Data_Root::getInstance()->getComponentById($childId, array('ignoreVisible' => true)); $target = Kwf_Component_Data_Root::getInstance()->getComponentById($newRow->id, array('ignoreVisible' => true)); if (!$target) { throw new Kwf_Exception("didn't find just duplicated component '{$newRow->id}' below '{$parentTarget->componentId}'"); } Kwc_Admin::getInstance($source->componentClass)->duplicate($source, $target, $progressBar); $sourceId = $source->componentId; $targetId = $target->componentId; unset($source); unset($target); unset($sourceRow); unset($newRow); /* echo round(memory_get_usage()/1024/1024, 2)."MB"; echo " gen: ".Kwf_Component_Generator_Abstract::$objectsCount.', '; echo " data: ".Kwf_Component_Data::$objectsCount.', '; echo " row: ".Kwf_Model_Row_Abstract::$objectsCount.''; $s = microtime(true); */ Kwf_Component_Data_Root::getInstance()->freeMemory(); /* echo ' / '.round((microtime(true)-$s)*1000, 2).' ms '; echo ' / '.round(memory_get_usage()/1024/1024, 2)."MB"; echo " gen: ".Kwf_Component_Generator_Abstract::$objectsCount.', '; echo " data: ".Kwf_Component_Data::$objectsCount.', '; echo " row: ".Kwf_Model_Row_Abstract::$objectsCount.''; //var_dump(Kwf_Model_Row_Abstract::$objectsByModel); //var_dump(Kwf_Component_Data::$objectsById); echo "\n"; */ foreach ($this->_getChildPageIds($childId) as $i) { if ($i != $targetId) { //no endless recursion id page is pasted below itself $this->_duplicatePageRecursive($sourceId, $targetId, $i, $progressBar); } } return $targetId; }
public function clean() { $be = Kwf_Cache_Simple::getBackend(); if ($be == 'memcache') { $prefix = Kwf_Cache_Simple::getUniquePrefix() . '-media-'; foreach ($this->_getSecondLevelCache()->getIds() as $id) { Kwf_Cache_Simple::getMemcache()->delete($prefix . $id); } } else { if ($be == 'redis') { $prefixLength = strlen(Kwf_Cache_Simple::getRedis()->_prefix('')); $it = null; while ($keys = Kwf_Cache_Simple::getRedis()->scan($it, Kwf_Cache_Simple::getRedis()->_prefix('media:*'))) { foreach ($keys as $k => $i) { $keys[$k] = substr($i, $prefixLength); } Kwf_Cache_Simple::getRedis()->delete($keys); } } else { if ($be == 'file') { //use secondlevel cache only } else { foreach ($this->_getSecondLevelCache()->getIds() as $id) { Kwf_Cache_Simple::delete('media-' . $id); } } } } $this->_getSecondLevelCache()->clean(); $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(Kwf_Config::getValue('mediaCacheDir'), RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST); foreach ($files as $fileinfo) { if ($fileinfo->getFilename() == '.gitignore') { continue; } $todo = $fileinfo->isDir() ? 'rmdir' : 'unlink'; $todo($fileinfo->getRealPath()); } }
protected function _afterDeleteRows($where) { parent::_afterDeleteRows($where); $cacheIds = array(); foreach ($this->getIds($where) as $id) { $cacheIds[] = $this->_getCacheId($id); } Kwf_Cache_Simple::delete($cacheIds); }
public function onRowUpdatesFinished(Kwf_Events_Event_Row_UpdatesFinished $event) { Kwf_Cache_Simple::delete($this->_deferredDeleteCacheIds); $this->_deferredDeleteCacheIds = array(); }
private function _deleteChildPageIdsCache($parentId) { Kwf_Cache_Simple::delete('pcIds-' . $parentId); if (!is_numeric($parentId)) { //when parentId is non-numeric LIKE $parentId% is used in query so we need to delete more: // root-main (that's whats in parent_id column) and root (that's used eg. when resolving urls) $pid = substr($parentId, 0, max(strrpos($parentId, '-'), strrpos($parentId, '_'))); Kwf_Cache_Simple::delete('pcIds-' . $pid); } }