将memcached用于多个项目

时间:2014-10-12 17:48:58

标签: php session nginx memcached

我在我的Ubuntu服务器上使用LEMP(Nginx,PHP-FPM)堆栈,用于大约10个PHP网站。每个网站都有自己的chroot'ed php池,ubuntu用户,会话,日志和根文件夹。

最近我得到了php会话文件inode问题:总共收集了大约1000万个会话文件,大约需要2个小时才能删除它们。

现在我想要做的是,将会话处理从基于文件切换到基于Memcached,以便它不会影响任何网站。我的意思是不需要更改代码。

对我来说,主要的问题是,如果我将默认会话处理从文件更改为我的主php.ini上的memcached,网站会话数据之间是否会发生冲突?还是危险的?有什么建议?我需要更深入的解释

提前谢谢

1 个答案:

答案 0 :(得分:0)

我有同样的情况。少数项目(网站)的1个memcache服务器。是的,我将所有会话存储在memcache中。为了排除项目之间的冲突(我不仅存储memcache中的会话),每个项目都有一个唯一的"前缀"用于memcache访问(设置/删除)。它的外观如何:

<?
  class ui { // or whatever
    public function __construct() {
      $this->memcache = new Memcached;
      if (!$this->memcache->addServer("127.0.0.1","1111")) 
            die('Something wrong.');
      $this->memcache_prefix = 'someUniQueForThisProjectString';
    }
    public function memset($var, $value) {
      return $this->memcache->set($this->memcache_prefix.$var, $value);
    }
    public function memdel($var) {
      return $this->memcache->delete($this->memcache_prefix.$var);
    }
  }
?>