0

$_SERVER['REQUEST_URI']同じものが2つの異なるPHPファイルを開く必要がある状況はありますか?

私は mod_rewrite を使用しておらず、Apache 仮想ホストと、PHP ファイルが存在するターゲット ディレクトリへの Alias ポインターのみを使用していますが、完全に不可解なものを見ています。介入する変更 (Apache 構成、FS など) がない 1/2 時間離れた 2 つの同一の要求には、同じ 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

30分前も間違っていましたが、逆になりました。

[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 と関係がありますか?

4

1 に答える 1

0

私はバグを追跡することができましたが、それは実例だったので、共有する必要があると思います.

PHP 5.4 から 5.5 にアップグレードすると、OpCache がデフォルトの「拡張機能」として追加され、デプロイメント システムで自動的にオンになりました。さて、以前は同じ問題を解決するために XCache を使用していたので、PHP で動作する 2 つの個別のオペコード キャッシュを (最初は気付かずに) 使用していました。

2 つの異なるが同一の PHP ファイルにマップされた 2 つの別個の HTTP クエリ(デプロイされたシステムと段階的なテスト デプロイの場合) が同じ __DIR__値で実行され、__FILE__値が初期化されるなど、それらの間に重要な相互作用があったようです。相対ロードとクラス オートローダーの大きな問題。

したがって、学んだ教訓として、誤って OpCache と XDebug オペコード キャッシュの両方を同時に有効にしていないことを確認してください。

于 2014-07-15T19:18:45.420 に答える