2011-11-15 33 views
1

我有一个WinCache奇怪的问题,这可能不是最好的论坛。我检查了超级用户,但是关于WinCache的结果有0个。整个网络的支持似乎很弱,但至少SO以前曾经讨论过。我在同一台服务器(CakePHP框架,Windows Server 2008 R2,IIS 7.5,PHP 5.3,FastCGI,WinCache 1.1)上有一个实时和开发站点。实时站点位于端口80上,开放于81. IIS有两个Web站点,每个站点都指向Inetpub \ wwwroot中不同的根文件夹。每个站点都在不同的应用程序池下运行。WinCache缓存不正确的CakePHP文件

更改开发站点后的一段时间,实时站点开始出错。一些痛苦的调试后,我发现了以下事件(完全跛脚)链中出现:

  1. 直播PHP脚本负荷为正常以下GET请求
  2. 直播PHP脚本会本身正常以下用户选择
  3. 当表单参数不符合预期时,Dev PHP脚本处理POST请求和错误。

如果我通过在端口80(现场直播),网络接口检查WINCACHE性质我看文档根目录的Inetpub \ wwwroot的\直播 - 如预期。但是,如果我查看文件缓存选项卡下的缓存文件列表,则会看到缓存两次的某些文件。鼠标悬停告诉我一个来自Inetpub \ wwwroot \ Dev,另一个来自Inetpub \ wwwroot \ Live。

这怎么可能?为什么IIS在GET请求中使用一个,在POST中使用另一个?我知道CakePHP根据格式化的URL选择要加载的文件,但处理路由的index.php文件位于Inetpub \ wwwroot \ Live内,因此可能永远不会请求不同文档根目录中的文件。在我看来,PHP向IIS请求一个文件,但IIS在与WinCache进行通信时丢失了大理石。

到目前为止,我看不到任何方法来禁用一个网站的WinCache,但即使我能我可能不会再相信它。

任何关于这个棘手问题的建议将不胜感激。

回答

2

我没有问题。

试试这个: 使用WINCACHE 1.2(测试版)

不要使用 “”在AppPool名称中。

(选项)为每个AppPool创建一个ProcessUser。

在会话目录中查找名为“wincache_session_ *”的会话文件。

从每个网络目录 中的“[AppDir 86] \ IIS [Wincache] \ wincache.php”复制wincache.php并通过http打开它。

+0

我很欣赏这个输入,但是考虑到这个问题的存在并且导致了真正的问题,我想为您提出上述步骤的原因以及它们如何影响我所看到的问题提供一些意见。我目前不使用WinCache,因为它太冒险 - 站点配置是由PHP文件处理的,所以存在将开发数据放入活动数据库的这个问题的风险。如果我再次使用WinCache,并且它仍然存在相同的问题,我可能很久没有看到证据。 – tomfumb