【发布时间】:2011-11-15 19:54:09
【问题描述】:
我正在使用 cakephp 来运行多租户应用程序。该应用程序只有 1 个实例,唯一的区别是每个应用程序连接到的数据库。除此之外,该应用程序是相同的。
我的设置:
- Apache 2.2
- PHP 5.3
- 蛋糕 1.3.10
-
Win 2k3 服务器
我将应用程序部署在 apache 的 docroot 下(只有 1 个 应用程序正在运行)。我最近从文件切换到 APC 缓存。这 两个应用程序的缓存文件前缀相同。使用阿帕奇 虚拟主机来决定去哪个应用程序。我正在缓存静态 html/js/css/gif 但不是 php(通过 apache 的 mod_expires)
问题:
我注意到一些本应可供 APP 1 使用的缓存值显示在 App 2 的下拉列表中。看到这种情况发生,我感到很震惊。
如何在应用之间的 APC 缓存层中添加隔离?
更新: 即使我制作了应用程序的新副本并将其放入自己的 docroot 中,也会出现问题!!!
更新2
场景 1) 1 个实例具有所有 perm/comb
如果我有像
这样的 php 代码if(client=="client1") {
$options = array(opt1,opt2);
}else if(client=="client2") {
$options = array(opt3,opt4);
}
并且此代码由客户端 1 和客户端 2 共享,APC 缓存对此有何影响?
场景 2) 每个客户端自定义 2 个实例
client1.php
$options = array(opt1,opt2);
client2.php
$options = array(opt3,opt4);
这对 APC 缓存有何影响? 如果我理解正确,对于场景 1,客户端 1 数据可能与客户端 2 混合(非常糟糕) 对于场景 2,只要我使用不同的缓存键,我就确定永远不会发生混淆吗?
【问题讨论】: