From 9eeb2b879cdcd769ad43eb04b60745083727a11a Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Tue, 11 Mar 2014 10:54:33 +0100 Subject: [PATCH] [ADDED] Settings Runtime Cache --- public/include/classes/setting.class.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/public/include/classes/setting.class.php b/public/include/classes/setting.class.php index 3da3ccb9b..1f92eb7ad 100644 --- a/public/include/classes/setting.class.php +++ b/public/include/classes/setting.class.php @@ -3,6 +3,21 @@ class Setting extends Base { protected $table = 'settings'; + private $cache = array(); + + /** + * Fetch all values available and cache them in this class + * That way we don't fetch them from DB for each call + */ + public function createCache() { + if ($aSettings = $this->getAllAssoc()) { + foreach ($aSettings as $key => $aData) { + $this->cache[$aData['name']] = $aData['value']; + } + return true; + } + return false; + } /** * Fetch a value from our table @@ -10,6 +25,8 @@ class Setting extends Base { * @return value string Value **/ public function getValue($name, $default="") { + // Try our class cache first + if (isset($this->cache[$name])) return $this->cache[$name]; $stmt = $this->mysqli->prepare("SELECT value FROM $this->table WHERE name = ? LIMIT 1"); if ($this->checkStmt($stmt) && $stmt->bind_param('s', $name) && $stmt->execute() && $result = $stmt->get_result()) { if ($result->num_rows > 0) { @@ -30,6 +47,8 @@ public function getValue($name, $default="") { * @return bool **/ public function setValue($name, $value) { + // Update local cache too + $this->cache[$name] = $value; $stmt = $this->mysqli->prepare(" INSERT INTO $this->table (name, value) VALUES (?, ?) @@ -44,3 +63,5 @@ public function setValue($name, $value) { $setting->setDebug($debug); $setting->setMysql($mysqli); $setting->setErrorCodes($aErrorCodes); +// Fill our class cache with data so we don't have to run SQL queries all the time +$setting->createCache();