是否有相同的$_SERVER['REQUEST_URI']
应该打开两个不同的PHP文件的情况?
我没有使用mod_rewrite,只是Apache虚拟主机和指向我的PHP文件所在的目标目录的Alias指针,但我看到一些对我来说完全神秘的东西。两个相同的请求相隔1/2小时,没有任何干预更改(Apache配置,FS等)有不同的文件加载相同的REQUEST_URI:
在utilupdate.php中我有:
error_log("Loading ".__FILE__." <= $_SERVER['REQUEST_URI']@$_SERVER['SERVER_NAME']);
来自error.log:
[Mon Jul 07 17:30:01.224430 2014] [:error] [pid 18928] [client 23.253.161.240:54571]
Loading /var/www/html/stage/utilupdate.php <= /dev/utilupdate.php@api.nugg.co
[Mon Jul 07 17:30:01.224510 2014] [:error] [pid 19518] [client 23.253.161.240:54572]
Loading /var/www/html/stage/utilupdate.php <= /stage/utilupdate.php@api.nugg.co
来自access.log:
23.253.161.240 - - [07/Jul/2014:17:30:01 +0000] "GET /stage/utilupdate.php HTTP/1.1" 200 1263 /var/www/html/stage/utilupdate.php 700653
23.253.161.240 - - [07/Jul/2014:17:30:01 +0000] "GET /dev/utilupdate.php HTTP/1.1" 200 1263 /var/www/html/dev/utilupdate.php 701516
半小时之前,这也是错误的但是逆转了:
[Mon Jul 07 16:30:01.680617 2014] [:error] [pid 15566] [client 23.253.161.240:54257] Loading /var/www/html/dev/utilupdate.php <= /dev/utilupdate.php@api.nugg.co
[Mon Jul 07 16:30:01.686350 2014] [:error] [pid 15567] [client 23.253.161.240:54261] Loading /var/www/html/dev/utilupdate.php <= /stage/utilupdate.php@api.nugg.co
23.253.161.240 - - [07/Jul/2014:16:30:01 +0000] "GET /stage/utilupdate.php HTTP/1.1" 200 1261 /var/www/html/stage/utilupdate.php
23.253.161.240 - - [07/Jul/2014:16:30:01 +0000] "GET /dev/utilupdate.php HTTP/1.1" 200 1261 /var/www/html/dev/utilupdate.php
在我看来,某些地方的缓存有问题,但我不知道从哪里开始。这可能与xcache或opcache有关吗?
答案 0 :(得分:0)
我设法追踪错误并且它是说明性的,所以我想我需要分享。
从PHP 5.4升级到5.5时,OpCache被添加为默认的“扩展”,并自动启用我的部署系统。现在,我之前一直在使用XCache来解决同样的问题,所以现在我(在没有最初意识到它的情况下)在我的PHP上运行了两个独立的操作码缓存。
似乎它们之间存在一些关键的交互,因此两个单独的HTTP查询映射到两个不同的但相同的PHP文件(在我们的情况下,在已部署的系统和分阶段测试部署中)是在初始化相同的 __DIR__
和__FILE__
值的情况下执行。相对负载和类自动加载器的大问题。
所以,经验教训,确保您没有意外同时启用OpCache和XDebug操作码缓存。