我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)
并且此代码由客户端1和客户端2共享,APC缓存将如何影响这一点?
场景2)每个客户端定制2个实例
client1.php
$options = array(opt1,opt2);
client2.php
$options = array(opt3,opt4);
Run Code Online (Sandbox Code Playgroud)
这对APC缓存有何影响?如果我理解正确,对于场景1,它可能将client1数据与客户端2混合(非常糟糕)对于场景2,只要我使用不同的缓存键,我肯定永远不会有混淆吗?
一种方法可能是:
\n\n您的问题似乎是,php 作为 fastcgi 运行,因此每个虚拟主机都会获得相同的 php 进程来共享其缓存。您需要设置 php 来为每个虚拟主机运行(不知道您需要寻找什么)。
\n\n我更喜欢 memcache 方法,因为:
\n\n