Use unique per board cache keys per [1] important when using shared memory from opcode caches with multiple boards on one server.

[1] http://area51.phpbb.com/phpBB/viewtopic.php?p=201739#p201739


git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9541 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Chris Smith 2009-06-04 15:59:42 +00:00
parent cd1c5de3a5
commit 832c6b2f62
5 changed files with 19 additions and 15 deletions

View file

@ -57,7 +57,7 @@ class acm extends acm_memory
*/ */
function _read($var) function _read($var)
{ {
return apc_fetch($var); return apc_fetch($this->key_prefix . $var);
} }
/** /**
@ -71,7 +71,7 @@ class acm extends acm_memory
*/ */
function _write($var, $data, $ttl = 2592000) function _write($var, $data, $ttl = 2592000)
{ {
return apc_store($var, $data, $ttl); return apc_store($this->key_prefix . $var, $data, $ttl);
} }
/** /**
@ -83,7 +83,7 @@ class acm extends acm_memory
*/ */
function _delete($var) function _delete($var)
{ {
return apc_delete($var); return apc_delete($this->key_prefix . $var);
} }
} }

View file

@ -49,6 +49,7 @@ class acm extends acm_memory
foreach (eaccelerator_list_keys() as $var) foreach (eaccelerator_list_keys() as $var)
{ {
// @todo Check why the substr() // @todo Check why the substr()
// @todo Only unset vars matching $this->key_prefix
eaccelerator_rm(substr($var['name'], 1)); eaccelerator_rm(substr($var['name'], 1));
} }
@ -76,7 +77,7 @@ class acm extends acm_memory
*/ */
function _read($var) function _read($var)
{ {
$result = eaccelerator_get($var); $result = eaccelerator_get($this->key_prefix . $var);
if ($result === null) if ($result === null)
{ {
@ -106,7 +107,7 @@ class acm extends acm_memory
// Serialize objects and make them easy to detect // Serialize objects and make them easy to detect
$data = (is_object($data)) ? $this->serialize_header . serialize($data) : $data; $data = (is_object($data)) ? $this->serialize_header . serialize($data) : $data;
return eaccelerator_put($var, $data, $ttl); return eaccelerator_put($this->key_prefix . $var, $data, $ttl);
} }
/** /**
@ -118,7 +119,7 @@ class acm extends acm_memory
*/ */
function _delete($var) function _delete($var)
{ {
return eaccelerator_rm($var); return eaccelerator_rm($this->key_prefix . $var);
} }
} }

View file

@ -91,7 +91,7 @@ class acm extends acm_memory
*/ */
function _read($var) function _read($var)
{ {
return $this->memcache->get($var); return $this->memcache->get($this->key_prefix . $var);
} }
/** /**
@ -105,7 +105,7 @@ class acm extends acm_memory
*/ */
function _write($var, $data, $ttl = 2592000) function _write($var, $data, $ttl = 2592000)
{ {
return $this->memcache->set($var, $data, $this->flags, $ttl); return $this->memcache->set($this->key_prefix . $var, $data, $this->flags, $ttl);
} }
/** /**
@ -117,7 +117,7 @@ class acm extends acm_memory
*/ */
function _delete($var) function _delete($var)
{ {
return $this->memcache->delete($var); return $this->memcache->delete($this->key_prefix . $var);
} }
} }

View file

@ -22,6 +22,8 @@ if (!defined('IN_PHPBB'))
*/ */
class acm_memory class acm_memory
{ {
var $key_prefix;
var $vars = array(); var $vars = array();
var $is_modified = false; var $is_modified = false;
@ -34,9 +36,10 @@ class acm_memory
*/ */
function acm_memory() function acm_memory()
{ {
global $phpbb_root_path; global $phpbb_root_path, $dbname, $table_prefix;
$this->cache_dir = $phpbb_root_path . 'cache/'; $this->cache_dir = $phpbb_root_path . 'cache/';
$this->key_prefix = md5($dbname, $table_prefix) . '_';
if (!isset($this->extension) || !extension_loaded($this->extension)) if (!isset($this->extension) || !extension_loaded($this->extension))
{ {

View file

@ -62,7 +62,7 @@ class acm extends acm_memory
*/ */
function _read($var) function _read($var)
{ {
return xcache_get($var); return xcache_get($this->key_prefix . $var);
} }
/** /**
@ -76,7 +76,7 @@ class acm extends acm_memory
*/ */
function _write($var, $data, $ttl = 2592000) function _write($var, $data, $ttl = 2592000)
{ {
return xcache_set($var, $data, $ttl); return xcache_set($this->key_prefix . $var, $data, $ttl);
} }
/** /**
@ -88,7 +88,7 @@ class acm extends acm_memory
*/ */
function _delete($var) function _delete($var)
{ {
return xcache_unset($var); return xcache_unset($this->key_prefix . $var);
} }
/** /**
@ -101,7 +101,7 @@ class acm extends acm_memory
function _isset($var) function _isset($var)
{ {
// Most caches don't need to check // Most caches don't need to check
return xcache_isset($var); return xcache_isset($this->key_prefix . $var);
} }
} }