diff options
| author | Christian Schneider | 2015-07-21 18:01:20 +0200 | 
|---|---|---|
| committer | Urban Müller | 2015-11-09 14:29:17 +0100 | 
| commit | f8e5dce632789e7882f2e8a9278795ea8d6ae5ff (patch) | |
| tree | f2864345aca8d33a59652fd4721ffffa969a31c7 | |
| parent | bb29c3272cfedc6bb5de1a216d587deccb1c8a49 (diff) | |
| download | itools-f8e5dce632789e7882f2e8a9278795ea8d6ae5ff.tar.gz itools-f8e5dce632789e7882f2e8a9278795ea8d6ae5ff.tar.bz2 itools-f8e5dce632789e7882f2e8a9278795ea8d6ae5ff.zip | |
Use Memcached instead of Memcache and use it for local cache too (using key@machine to not clash between machines)
| -rw-r--r-- | it_cache.class | 33 | 
1 files changed, 27 insertions, 6 deletions
| diff --git a/it_cache.class b/it_cache.class index 58277ae..30db0ea 100644 --- a/it_cache.class +++ b/it_cache.class @@ -71,7 +71,7 @@ static function put($key, $value, $p = array())  	$p = it_cache::_defaults($p);  	if ($p['distributed'] && ($memcache = it_cache::_get_memcache($p))) -		$success = @$memcache->set($key, $value, MEMCACHE_COMPRESSED, $p['ttl']); +		$success = @$memcache->set($key, $value, $p['ttl']);  	else  		$success = ($func = self::$_store_func) ? $func($key, $value, $p['ttl']) : null; @@ -87,12 +87,12 @@ static function _get_memcache($p)  {  	$memcache_id = "it_cache_memcache_" . $p['hostsfile']; -	if (!isset($GLOBALS[$memcache_id]) && class_exists("Memcache", false)) +	if (!isset($GLOBALS[$memcache_id]) && class_exists("Memcached", false))  	{ -		$memcache = new Memcache; +		$memcache = new Memcached;  		foreach (array_filter(it::replace(array('[#\s].*' => ""), file($p['hostsfile']))) as $host) -			$reachable += intval(@$memcache->addServer($host)); +			$reachable += intval(@$memcache->addServer($host, 11211));  		$GLOBALS[$memcache_id] = $reachable ? $memcache : false;  	} @@ -100,7 +100,28 @@ static function _get_memcache($p)  	return $GLOBALS[$memcache_id];  } +static function _memcache_local_fetch($key, &$success) +{ +	if ($memcache = it_cache::_get_memcache(it_cache::_defaults([]))) +		$result = $success = @$memcache->get(self::_memcache_local_key($key)); + +	return $result; +} + +static function _memcache_local_store($key, $value, $ttl) +{ +	if ($memcache = it_cache::_get_memcache(it_cache::_defaults([]))) +		$success = @$memcache->set(self::_memcache_local_key($key), $value, $ttl); + +	return $success; +} + +static function _memcache_local_key($key) +{ +	return "$key@" . gethostname(); +} +  } -it_cache::$_fetch_func = function_exists("apcu_fetch") ? "apcu_fetch" : (function_exists("apc_fetch") ? "apc_fetch" : null); -it_cache::$_store_func = function_exists("apcu_store") ? "apcu_store" : (function_exists("apc_store") ? "apc_store" : null); +it_cache::$_fetch_func = function_exists("apcu_fetch") ? "apcu_fetch" : (function_exists("apc_fetch") ? "apc_fetch" : "it_cache::_memcache_local_fetch"); +it_cache::$_store_func = function_exists("apcu_store") ? "apcu_store" : (function_exists("apc_store") ? "apc_store" : "it_cache::_memcache_local_store"); |