From 3874c13a404dafd526d7e34ca660239dc34dd300 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sat, 21 Jan 2012 12:16:53 -0500 Subject: switched the function names to system cache --- engine/lib/cache.php | 80 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 59 insertions(+), 21 deletions(-) (limited to 'engine/lib/cache.php') diff --git a/engine/lib/cache.php b/engine/lib/cache.php index 47c3af73c..b563f5ab0 100644 --- a/engine/lib/cache.php +++ b/engine/lib/cache.php @@ -10,15 +10,14 @@ /* Filepath Cache */ /** - * Returns an ElggCache object suitable for caching view - * file load paths to disk under $CONFIG->dataroot. + * Returns an ElggCache object suitable for caching system information * * @todo Can this be done in a cleaner way? * @todo Swap to memcache etc? * - * @return ElggFileCache A cache object suitable for caching file load paths. + * @return ElggFileCache */ -function elgg_get_filepath_cache() { +function elgg_get_system_cache() { global $CONFIG; /** @@ -34,29 +33,29 @@ function elgg_get_filepath_cache() { } /** - * Reset the file path cache. + * Reset the system cache by deleting the caches * * @return bool */ -function elgg_filepath_cache_reset() { - $cache = elgg_get_filepath_cache(); +function elgg_reset_system_cache() { + $cache = elgg_get_system_cache(); $view_types_result = $cache->delete('view_types'); $views_result = $cache->delete('views'); return $view_types_result && $views_result; } /** - * Saves a filepath cache. + * Saves a system cache. * * @param string $type The type or identifier of the cache * @param string $data The data to be saved * @return bool */ -function elgg_filepath_cache_save($type, $data) { +function elgg_save_system_cache($type, $data) { global $CONFIG; if ($CONFIG->viewpath_cache_enabled) { - $cache = elgg_get_filepath_cache(); + $cache = elgg_get_system_cache(); return $cache->save($type, $data); } @@ -64,16 +63,16 @@ function elgg_filepath_cache_save($type, $data) { } /** - * Retrieve the contents of the filepath cache. + * Retrieve the contents of a system cache. * * @param string $type The type of cache to load * @return string */ -function elgg_filepath_cache_load($type) { +function elgg_load_system_cache($type) { global $CONFIG; if ($CONFIG->viewpath_cache_enabled) { - $cache = elgg_get_filepath_cache(); + $cache = elgg_get_system_cache(); $cached_data = $cache->load($type); if ($cached_data) { @@ -85,35 +84,74 @@ function elgg_filepath_cache_load($type) { } /** - * Enables the views file paths disk cache. + * Enables the system disk cache. * * Uses the 'viewpath_cache_enabled' datalist with a boolean value. - * Resets the views paths cache. + * Resets the system cache. * * @return void */ -function elgg_enable_filepath_cache() { +function elgg_enable_system_cache() { global $CONFIG; datalist_set('viewpath_cache_enabled', 1); $CONFIG->viewpath_cache_enabled = 1; - elgg_filepath_cache_reset(); + elgg_reset_system_cache(); } /** - * Disables the views file paths disk cache. + * Disables the system disk cache. * * Uses the 'viewpath_cache_enabled' datalist with a boolean value. - * Resets the views paths cache. + * Resets the system cache. * * @return void */ -function elgg_disable_filepath_cache() { +function elgg_disable_system_cache() { global $CONFIG; datalist_set('viewpath_cache_enabled', 0); $CONFIG->viewpath_cache_enabled = 0; - elgg_filepath_cache_reset(); + elgg_reset_system_cache(); +} + +/** @todo deprecate in Elgg 1.9 **/ + +/** + * @access private + */ +function elgg_get_filepath_cache() { + return elgg_get_system_cache(); +} +/** + * @access private + */ +function elgg_filepath_cache_reset() { + return elgg_reset_system_cache(); +} +/** + * @access private + */ +function elgg_filepath_cache_save($type, $data) { + return elgg_save_system_cache($type, $data); +} +/** + * @access private + */ +function elgg_filepath_cache_load($type) { + return elgg_load_system_cache($type); +} +/** + * @access private + */ +function elgg_enable_filepath_cache() { + return elgg_enable_system_cache(); +} +/** + * @access private + */ +function elgg_disable_filepath_cache() { + return elgg_disable_system_cache(); } /* Simplecache */ -- cgit v1.2.3 From 19a6962c819dc33a0967dcef56154f6930b52287 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sat, 21 Jan 2012 12:44:55 -0500 Subject: Fixes #4180 finished conversion to system cache by converting datalist/CONFIG var name --- documentation/info/config.php | 6 +++--- engine/lib/cache.php | 16 ++++++++-------- engine/lib/configuration.php | 8 ++++---- .../2012012100-1.8.3-system_cache-93100e7d55a24a11.php | 13 +++++++++++++ install/ElggInstaller.php | 2 +- .../views/default/admin/developers/settings.php | 2 +- version.php | 2 +- views/default/forms/admin/site/update_advanced.php | 2 +- 8 files changed, 32 insertions(+), 19 deletions(-) create mode 100644 engine/lib/upgrades/2012012100-1.8.3-system_cache-93100e7d55a24a11.php (limited to 'engine/lib/cache.php') diff --git a/documentation/info/config.php b/documentation/info/config.php index 19e76c8ae..b45428477 100644 --- a/documentation/info/config.php +++ b/documentation/info/config.php @@ -218,11 +218,11 @@ $CONFIG->dataroot; $CONFIG->simplecache_enabled; /** - * Is view paths cache enabled + * Is the system cache enabled * - * @global string $CONFIG->viewpath_cache_enabled + * @global string $CONFIG->system_cache_enabled */ -$CONFIG->viewpath_cache_enabled; +$CONFIG->system_cache_enabled; /** * The site description from the current site object. diff --git a/engine/lib/cache.php b/engine/lib/cache.php index b563f5ab0..75183d23a 100644 --- a/engine/lib/cache.php +++ b/engine/lib/cache.php @@ -54,7 +54,7 @@ function elgg_reset_system_cache() { function elgg_save_system_cache($type, $data) { global $CONFIG; - if ($CONFIG->viewpath_cache_enabled) { + if ($CONFIG->system_cache_enabled) { $cache = elgg_get_system_cache(); return $cache->save($type, $data); } @@ -71,7 +71,7 @@ function elgg_save_system_cache($type, $data) { function elgg_load_system_cache($type) { global $CONFIG; - if ($CONFIG->viewpath_cache_enabled) { + if ($CONFIG->system_cache_enabled) { $cache = elgg_get_system_cache(); $cached_data = $cache->load($type); @@ -86,7 +86,7 @@ function elgg_load_system_cache($type) { /** * Enables the system disk cache. * - * Uses the 'viewpath_cache_enabled' datalist with a boolean value. + * Uses the 'system_cache_enabled' datalist with a boolean value. * Resets the system cache. * * @return void @@ -94,15 +94,15 @@ function elgg_load_system_cache($type) { function elgg_enable_system_cache() { global $CONFIG; - datalist_set('viewpath_cache_enabled', 1); - $CONFIG->viewpath_cache_enabled = 1; + datalist_set('system_cache_enabled', 1); + $CONFIG->system_cache_enabled = 1; elgg_reset_system_cache(); } /** * Disables the system disk cache. * - * Uses the 'viewpath_cache_enabled' datalist with a boolean value. + * Uses the 'system_cache_enabled' datalist with a boolean value. * Resets the system cache. * * @return void @@ -110,8 +110,8 @@ function elgg_enable_system_cache() { function elgg_disable_system_cache() { global $CONFIG; - datalist_set('viewpath_cache_enabled', 0); - $CONFIG->viewpath_cache_enabled = 0; + datalist_set('system_cache_enabled', 0); + $CONFIG->system_cache_enabled = 0; elgg_reset_system_cache(); } diff --git a/engine/lib/configuration.php b/engine/lib/configuration.php index cccd69105..772c24930 100644 --- a/engine/lib/configuration.php +++ b/engine/lib/configuration.php @@ -599,11 +599,11 @@ function _elgg_load_application_config() { } else { $CONFIG->simplecache_enabled = 1; } - $viewpath_cache_enabled = datalist_get('viewpath_cache_enabled'); - if ($viewpath_cache_enabled !== false) { - $CONFIG->viewpath_cache_enabled = $viewpath_cache_enabled; + $system_cache_enabled = datalist_get('system_cache_enabled'); + if ($system_cache_enabled !== false) { + $CONFIG->system_cache_enabled = $system_cache_enabled; } else { - $CONFIG->viewpath_cache_enabled = 1; + $CONFIG->system_cache_enabled = 1; } // initialize context here so it is set before the get_input call diff --git a/engine/lib/upgrades/2012012100-1.8.3-system_cache-93100e7d55a24a11.php b/engine/lib/upgrades/2012012100-1.8.3-system_cache-93100e7d55a24a11.php new file mode 100644 index 000000000..3a9aae2a1 --- /dev/null +++ b/engine/lib/upgrades/2012012100-1.8.3-system_cache-93100e7d55a24a11.php @@ -0,0 +1,13 @@ +dbprefix}datalists WHERE name='viewpath_cache_enabled'"; +delete_data($query); diff --git a/install/ElggInstaller.php b/install/ElggInstaller.php index d556ba744..0e75ed008 100644 --- a/install/ElggInstaller.php +++ b/install/ElggInstaller.php @@ -1401,7 +1401,7 @@ class ElggInstaller { datalist_set('default_site', $site->getGUID()); datalist_set('version', get_version()); datalist_set('simplecache_enabled', 1); - datalist_set('viewpath_cache_enabled', 1); + datalist_set('system_cache_enabled', 1); // new installations have run all the upgrades $upgrades = elgg_get_upgrade_files($submissionVars['path'] . 'engine/lib/upgrades/'); diff --git a/mod/developers/views/default/admin/developers/settings.php b/mod/developers/views/default/admin/developers/settings.php index 519364fe1..459cbabad 100644 --- a/mod/developers/views/default/admin/developers/settings.php +++ b/mod/developers/views/default/admin/developers/settings.php @@ -13,7 +13,7 @@ $data = array( 'system_cache' => array( 'type' => 'checkbox', 'value' => 1, - 'checked' => elgg_get_config('viewpath_cache_enabled') == 1, + 'checked' => elgg_get_config('system_cache_enabled') == 1, ), 'display_errors' => array( diff --git a/version.php b/version.php index 540fecac6..dc6897c18 100644 --- a/version.php +++ b/version.php @@ -11,7 +11,7 @@ // YYYYMMDD = Elgg Date // XX = Interim incrementer -$version = 2012012000; +$version = 2012012100; // Human-friendly version name $release = '1.8.3'; diff --git a/views/default/forms/admin/site/update_advanced.php b/views/default/forms/admin/site/update_advanced.php index 786feb101..b935090f0 100644 --- a/views/default/forms/admin/site/update_advanced.php +++ b/views/default/forms/admin/site/update_advanced.php @@ -44,7 +44,7 @@ $form_body .= "
" . elgg_echo('installation:systemcache:description') . "
array(elgg_echo('installation:systemcache:label') => elgg_echo('installation:systemcache:label')), 'name' => 'system_cache_enabled', - 'value' => (elgg_get_config('viewpath_cache_enabled') ? elgg_echo('installation:systemcache:label') : ""), + 'value' => (elgg_get_config('system_cache_enabled') ? elgg_echo('installation:systemcache:label') : ""), )) . "
"; $debug_options = array('0' => elgg_echo('installation:debug:none'), 'ERROR' => elgg_echo('installation:debug:error'), 'WARNING' => elgg_echo('installation:debug:warning'), 'NOTICE' => elgg_echo('installation:debug:notice')); -- cgit v1.2.3 From b466d3e188a001f8d7ede1afbf3927c6dbdeae15 Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sat, 21 Jan 2012 13:03:47 -0500 Subject: better location for system cache in data directory --- engine/lib/cache.php | 12 ++++++++---- engine/lib/plugins.php | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'engine/lib/cache.php') diff --git a/engine/lib/cache.php b/engine/lib/cache.php index 75183d23a..cfda26e52 100644 --- a/engine/lib/cache.php +++ b/engine/lib/cache.php @@ -26,7 +26,7 @@ function elgg_get_system_cache() { static $FILE_PATH_CACHE; if (!$FILE_PATH_CACHE) { - $FILE_PATH_CACHE = new ElggFileCache($CONFIG->dataroot); + $FILE_PATH_CACHE = new ElggFileCache($CONFIG->dataroot . 'system_cache/'); } return $FILE_PATH_CACHE; @@ -39,9 +39,13 @@ function elgg_get_system_cache() { */ function elgg_reset_system_cache() { $cache = elgg_get_system_cache(); - $view_types_result = $cache->delete('view_types'); - $views_result = $cache->delete('views'); - return $view_types_result && $views_result; + + $result = true; + $cache_types = array('view_paths', 'view_types'); + foreach ($cache_types as $type) { + $result = $result && $cache->delete($type); + } + return $result; } /** diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index bbec52c2e..d9c7b321b 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -302,7 +302,7 @@ function elgg_load_plugins() { } // Load view caches if available - $cached_view_paths = elgg_load_system_cache('views'); + $cached_view_paths = elgg_load_system_cache('view_paths'); $cached_view_types = elgg_load_system_cache('view_types'); $cached_view_info = is_string($cached_view_paths) && is_string($cached_view_types); @@ -334,7 +334,7 @@ function elgg_load_plugins() { // Cache results if (!$cached_view_info) { - elgg_save_system_cache('views', serialize($CONFIG->views)); + elgg_save_system_cache('view_paths', serialize($CONFIG->views)); elgg_save_system_cache('view_types', serialize($CONFIG->view_types)); } -- cgit v1.2.3 From 7c962fa6cbaf687daafb8588ff601fe664e1392c Mon Sep 17 00:00:00 2001 From: Cash Costello Date: Sat, 21 Jan 2012 13:33:40 -0500 Subject: moved cache loading out of plugin code --- engine/lib/cache.php | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- engine/lib/elgglib.php | 2 ++ engine/lib/plugins.php | 17 +---------------- 3 files changed, 50 insertions(+), 18 deletions(-) (limited to 'engine/lib/cache.php') diff --git a/engine/lib/cache.php b/engine/lib/cache.php index cfda26e52..633c470eb 100644 --- a/engine/lib/cache.php +++ b/engine/lib/cache.php @@ -395,7 +395,40 @@ function elgg_invalidate_simplecache() { return $return; } -function elgg_cache_init() { +/** + * @see elgg_reset_system_cache() + * @access private + */ +function _elgg_load_cache() { + global $CONFIG; + + $result = true; + $cache_types = array( + 'view_paths' => 'views', + 'view_types' => 'view_types', + ); + $data = array(); + foreach ($cache_types as $type => $var_name) { + $data[$var_name] = elgg_load_system_cache($type); + $result = $result && is_string($data[$var_name]); + } + + if ($result) { + $CONFIG->system_cache_loaded = true; + foreach ($data as $name => $value) { + $CONFIG->$name = unserialize($value); + } + } else { + $CONFIG->system_cache_loaded = false; + } +} + +/** + * @access private + */ +function _elgg_cache_init() { + global $CONFIG; + $viewtype = elgg_get_viewtype(); // Regenerate the simple cache if expired. @@ -410,6 +443,18 @@ function elgg_cache_init() { } $CONFIG->lastcache = $lastcached; } + + // cache system data if enabled and not loaded + if ($CONFIG->system_cache_enabled && !$CONFIG->system_cache_loaded) { + $cache_types = array( + 'view_paths' => 'views', + 'view_types' => 'view_types', + ); + $data = array(); + foreach ($cache_types as $type => $var_name) { + elgg_save_system_cache($type, serialize($CONFIG->$var_name)); + } + } } -elgg_register_event_handler('ready', 'system', 'elgg_cache_init'); \ No newline at end of file +elgg_register_event_handler('ready', 'system', '_elgg_cache_init'); diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 98e7af2a9..3c56567e9 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -2080,6 +2080,8 @@ function _elgg_engine_boot() { _elgg_load_application_config(); _elgg_load_site_config(); + + _elgg_load_cache(); } /** diff --git a/engine/lib/plugins.php b/engine/lib/plugins.php index d9c7b321b..07b21d276 100644 --- a/engine/lib/plugins.php +++ b/engine/lib/plugins.php @@ -301,16 +301,7 @@ function elgg_load_plugins() { return false; } - // Load view caches if available - $cached_view_paths = elgg_load_system_cache('view_paths'); - $cached_view_types = elgg_load_system_cache('view_types'); - $cached_view_info = is_string($cached_view_paths) && is_string($cached_view_types); - - if ($cached_view_info) { - $CONFIG->views = unserialize($cached_view_paths); - $CONFIG->view_types = unserialize($cached_view_types); - - // don't need to register views + if (elgg_get_config('system_cache_loaded')) { $start_flags = $start_flags & ~ELGG_PLUGIN_REGISTER_VIEWS; } @@ -332,12 +323,6 @@ function elgg_load_plugins() { } } - // Cache results - if (!$cached_view_info) { - elgg_save_system_cache('view_paths', serialize($CONFIG->views)); - elgg_save_system_cache('view_types', serialize($CONFIG->view_types)); - } - return $return; } -- cgit v1.2.3