diff --git a/app/scripts/resources/classes/scripts.php b/app/scripts/resources/classes/scripts.php index c26fc581df..7de233a11f 100644 --- a/app/scripts/resources/classes/scripts.php +++ b/app/scripts/resources/classes/scripts.php @@ -207,6 +207,11 @@ if (!class_exists('scripts')) { $tmp .= $this->correct_path(" document_root = [[".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."]];\n"); $tmp .= "\n"; + $tmp = "\n"; + $tmp .= "--store settings in memcache\n"; + $tmp .= $this->correct_path(" settings_in_cache = false;\n"); + $tmp .= "\n"; + if ((strlen($this->db_type) > 0) || (strlen($this->dsn_name) > 0)) { $tmp .= "--database information\n"; $tmp .= " database = {}\n"; diff --git a/resources/install/scripts/resources/functions/lazy_settings.lua b/resources/install/scripts/resources/functions/lazy_settings.lua index de7d60ee97..f0ecf4f3ef 100644 --- a/resources/install/scripts/resources/functions/lazy_settings.lua +++ b/resources/install/scripts/resources/functions/lazy_settings.lua @@ -55,6 +55,7 @@ function Settings.new(db, domain_name, domain_uuid) self._db = db self._domain_name = domain_name self._domain_uuid = domain_uuid + self._use_cache = not not settings_in_cache return self end @@ -74,16 +75,18 @@ function Settings:get(category, subcategory, name) if v == NONE then return nil end if v ~= nil then return v end - local key = self:_cache_key(category, subcategory, name) + if self._use_cache then + local key = self:_cache_key(category, subcategory, name) - v = cache.get(key) - if v then - if v ~= NONE and name == 'array' then - v = split(v, '/+/', true) + v = cache.get(key) + if v then + if v ~= NONE and name == 'array' then + v = split(v, '/+/', true) + end + self:set(category, subcategory, name, v) + if v == NONE then return nil end + return v end - self:set(category, subcategory, name, v) - if v == NONE then return nil end - return v end return self:_load(category, subcategory, name) @@ -97,6 +100,7 @@ function Settings:_load(category, subcategory, name) end local found = false + --get the domain settings if domain_uuid then local sql = "SELECT domain_setting_uuid,domain_setting_category,domain_setting_subcategory,domain_setting_name,domain_setting_value " @@ -120,6 +124,7 @@ function Settings:_load(category, subcategory, name) end) end + --get default settings if not found then local sql = "SELECT default_setting_uuid,default_setting_category,default_setting_subcategory,default_setting_name,default_setting_value " sql = sql .. "FROM v_default_settings "; @@ -141,6 +146,11 @@ function Settings:_load(category, subcategory, name) end) end + if type(self._db) == 'string' then + db:release() + end + + --set empty value for unknown setting if not found then self:set(category, subcategory, name, NONE) end @@ -148,7 +158,8 @@ function Settings:_load(category, subcategory, name) local a = self._array local v = a[category] and a[category][subcategory] and a[category][subcategory][name] - if cache.support() then + --store settings in cache + if self._use_cache and cache.support() then local key = self:_cache_key(category, subcategory, name) local value = v if v ~= NONE and name == 'array' then @@ -158,10 +169,6 @@ function Settings:_load(category, subcategory, name) cache.set(key, value, exp) end - if type(self._db) == 'string' then - db:release() - end - if v == NONE then return nil end return v end