我正在使用cakephp来运行多租户应用程序。应用程序只有一个实例,唯一的区别是每个应用程序连接到的数据库。除此之外,该应用程序是相同的。
我的设置:
赢取2k3服务器
我在apache的docroot下部署了应用程序(只有1个实例) 该应用正在运行)。我最近从File切换到了APC缓存。该 两个应用程序的缓存文件前缀相同。使用Apache 虚拟主机决定要转到哪个应用。我正在缓存静态 html / js / css / gif但不是php(通过apache的mod_expires)
问题:
我注意到APP 1可用的一些缓存值显示在App 2的下拉列表中。我很震惊地看到这种情况发生。
如何在应用之间的APC缓存层中添加隔离?
更新: 即使我制作应用程序的新副本并将其放入自己的docroot中,也会出现问题!
UPDATE2
场景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,可能将client1数据与客户端2混合(非常糟糕) 对于场景2,只要我使用不同的缓存键,我确定永远不会有混音?
答案 0 :(得分:2)
原因:
解决方法:强>
答案 1 :(得分:1)
一种方法可能是:
你的问题似乎是,php运行为fastcgi,因此每个vhost将获得相同的php进程来共享其缓存。你需要设置php才能为每个vhost运行(不知道你需要查找的内容)。
我更喜欢memcache方法,因为: