/** * foreces a garbage collection * @static * @return void */ public static function collectGarbage($keepItems = array()) { // close mysql-connection Pimcore_Resource::close(); $protectedItems = array("pimcore_config_system", "Zend_Locale", "pimcore_tag_block_current", "pimcore_tag_block_numeration", "pimcore_user", "Zend_Translate", "pimcore_admin_user", "pimcore_admin_initialized", "Pimcore_API_Plugin_Broker", "pimcore_config_website", "pimcore_editmode", "pimcore_error_document", "pimcore_site"); if (is_array($keepItems) && count($keepItems) > 0) { $protectedItems = array_merge($protectedItems, $keepItems); } $registryBackup = array(); foreach ($protectedItems as $item) { if (Zend_Registry::isRegistered($item)) { $registryBackup[$item] = Zend_Registry::get($item); } } Zend_Registry::_unsetInstance(); foreach ($registryBackup as $key => $value) { Zend_Registry::set($key, $value); } Pimcore_Resource::reset(); }