PHP request_uri与__FILE__

时间:2014-07-07 17:55:11

标签: php apache xcache opcache

是否有相同的$_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有关吗?

1 个答案:

答案 0 :(得分:0)

我设法追踪错误并且它是说明性的,所以我想我需要分享。

从PHP 5.4升级到5.5时,OpCache被添加为默认的“扩展”,并自动启用我的部署系统。现在,我之前一直在使用XCache来解决同样的问题,所以现在我(在没有最初意识到它的情况下)在我的PHP上运行了两个独立的操作码缓存。

似乎它们之间存在一些关键的交互,因此两个单独的HTTP查询映射到两个不同的但相同的PHP文件(在我们的情况下,在已部署的系统和分阶段测试部署中)是在初始化相同的 __DIR____FILE__值的情况下执行。相对负载和类自动加载器的大问题。

所以,经验教训,确保您没有意外同时启用OpCache和XDebug操作码缓存。