在一台服务器上为不同的域(相同的密钥)使用memcache

时间:2014-05-29 20:49:36

标签: php codeigniter memcached

我遇到这种情况: 我在一台服务器上有2个站点 - 我使用相同的框架(基于Codeigniter框架)。在这段代码中我使用了像

这样的memcache
    $memcache = new Memcache;
    $memcache->connect('localhost', 11211);
    $value = $memcache->set('max_id', 100500);

在这种情况下,当我在site1上更改此值时,我也为site2提供了此值,但我需要为不同的站点使用不同的值。

当然我可以替换所有键,添加site_url()如下:

$value = $memcache->set(base_url() . 'max_id', 100500);

但也许存在更好的解决方案?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案: 创建一个新类,它继承自Memcache并在我的网站上使用此类。

class Site_Memcache extends Memcache
{
    private $_prefix = '';

    public function __construct()
    {
        $this->_prefix = $_SERVER['HTTP_HOST'];
    }

    public function set($key, $var, $flag = null, $expire = null)
    {
        parent::set($this->_prefix . $key, $var, $flag, $expire);
    }

    public function get($key, &$flags = null)
    {
        return parent::get($this->_prefix . $key, $flags);
    }

    public function delete($key)
    {
        return parent::delete($this->_prefix . $key);
    }
}