WinCache缓存不正确的CakePHP文件


WinCache caching incorrect CakePHP files

我有一个奇怪的问题与WinCache,这可能不是最好的论坛。我检查了超级用户,但有0关于WinCache的结果。整个网络的支持似乎都很弱,但至少之前有人讨论过这个问题。

我在同一台服务器上有一个现场和一个开发站点(CakePHP框架,Windows server 2008 R2, IIS 7.5, PHP 5.3, FastCGI, WinCache 1.1)。Live站点位于80端口,dev位于81端口。IIS有两个网站,每个都指向Inetpub'wwwroot中不同的根文件夹。每个站点在不同的应用程序池下运行。

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

  1. 实时PHP脚本在GET请求后正常加载
  2. 实时PHP脚本在用户选择
  3. 后将正常发送到自身
  4. 开发PHP脚本处理POST请求和错误时,表单参数不符合预期。

如果我通过端口80下的web界面检查WinCache属性(live站点),我看到文档根是Inetpub'wwwroot' live -如预期的那样。但是,如果我查看文件缓存选项卡下的缓存文件列表,我会看到有些文件被缓存了两次。鼠标滑过告诉我一个来自Inetpub'wwwroot'Dev,另一个来自Inetpub'wwwroot'Live。

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

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

我没有问题。

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

不要在AppPool名称中使用"."

(选择)。为每个appool创建一个ProcessUser

在我们的会话目录中查找名为"wincache_session_*"的会话文件。

从"[AppDir 86]'IIS[Wincache]' Wincache .php"目录中拷贝Wincache .php文件并通过http打开