diff options
Diffstat (limited to 'engine')
| -rw-r--r-- | engine/lib/elgglib.php | 19 | 
1 files changed, 18 insertions, 1 deletions
| diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 836064060..addcf930e 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -1506,9 +1506,20 @@  			$name = sanitise_string($name);  			if (isset($DATALIST_CACHE[$name]))  				return $DATALIST_CACHE[$name]; +				 +			// If memcache enabled then cache value in memcache +			static $datalist_memcache; +			if ((!$datalist_memcache) && (is_memcache_available())) +				$datalist_memcache = new ElggMemcache('datalist_memcache'); +			if ($datalist_memcache) $value = $datalist_memcache->load($name); +			if ($value) return $value;  			if ($row = get_data_row("SELECT value from {$CONFIG->dbprefix}datalists where name = '{$name}' limit 1")) { -				$DATALIST_CACHE[$name] = $row->value;
 +				$DATALIST_CACHE[$name] = $row->value; +				 +				// Cache it if memcache is available +				if ($datalist_memcache) $datalist_memcache->save($name, $row-value); +				
  				return $row->value;
  			}
  			return false;
 @@ -1528,6 +1539,12 @@  			$name = sanitise_string($name);
  			$value = sanitise_string($value); +			 +			// If memcache is available then invalidate the cached copy +			static $datalist_memcache; +			if ((!$datalist_memcache) && (is_memcache_available())) +				$datalist_memcache = new ElggMemcache('datalist_memcache'); +			if ($datalist_memcache) $value = $datalist_memcache->delete($name);  			//delete_data("delete from {$CONFIG->dbprefix}datalists where name = '{$name}'");
  			insert_data("INSERT into {$CONFIG->dbprefix}datalists set name = '{$name}', value = '{$value}' ON DUPLICATE KEY UPDATE value='{$value}'"); | 
