nginx/phpfpm が古い PHP ファイルの結果を返す

nginx/phpfpm が古い PHP ファイルの結果を返す

サーバー: ubuntu 14.04lts nginx(v1.10) サーバーは、ファイルを変更した後でも古いコンテンツを表示し、変更は 3 ~ 6 分後に反映されます。ドキュメント ルート ディレクトリは、NFS 共有からマウントされます。ファイルの変更は、catファイルを読み込んだときにすぐに反映されますが、ブラウザーでは同じことが反映されません。nginx sendfile を無効にしようとしましたが、動作はランダムで、変更が反映されるときもあれば、古い PHP 結果が表示されるときもあります。

注: ブラウザのキャッシュをクリアし、phpopcache を無効にしました。NFS と nginx 間の平均遅延は 0.3 ミリ秒未満です。キャッシュ サーバー/クライアントは実行されません。

以下はクライアント側のNFSマウントオプションです

mount -t nfs
10.10.17.45:/www/public_html on /www/public_html type nfs (rw,noatime,nolock,bg,intr,tcp,actimeo=1800,addr=10.10.17.45

以下はNFSサーバのエクスポートconfです

/www/public_html 10.10.17.40(rw,fsid=0,async,no_root_squash,no_subtree_check)

例えば、showme.php以下の内容のファイルがあります

<?php $var1="abc" echo $var1; ?> 

そしてこれを変更すれば

<?php $var1="xyz" echo $var1; ?> 

これはブラウザには反映されません

答え1

PHP のバージョンと php-fpm の設定によって異なりますが、これはおそらく PHP が PHP ファイルをキャッシュ/コンパイルし、その後 FPM プロセスの 1 つが最大数のリクエストを処理した後で停止したときにそれを更新することの問題です。次の操作を実行できます。

sudo service php-fpm restart

または

sudo systemctl restart php-fpm

ファイルの変更をすぐに取得します。

関連情報