私は大きなWordPressのサイトを維持していますが、無関係な問題のトラブルシューティングを試みています。コードにtrace_statementを追加するだけです。これは、error_log()の呼び出し以上のものです。簡単に私のサーバー設定は、nfs経由でWebサイトのドキュメントルートを共有するファイルサーバーです。 nginx + apc + php/fpmを実行している2つのWebサーバがあります。私はファイルサーバ上で直接phpファイルを編集しています。ウェブサーバからファイルを見ると、私は自分の変更を見ることができますが、エラーログの末尾に変更が反映されていないことがわかります。私はまったく変更を加えなかったかのように古いトレースステートメントを見続けています。コード変更がすぐに反映されないのはなぜですか?
私の理論は、コードがapc(duh)またはクライアント側のnfsキャッシュにキャッシュされているということです(viでの編集を見ることはできません)。私は、apc_clear_cache()を実行するスクリプトを使ってapcキャッシュをフラッシュすることでこれを軽減しようとしています。さらに、私は何かが古いキャッシュされたPHPコードをフラッシュすることを望んで、php-fpmと同様、nginxを再起動しました。これらの方法は機能していません。ログにコードの変更が反映されるまでには、1時間以上待つ必要があります。
私がトラブルシューティングしているウェブサイトはかなり高いトラフィックであるため、nfs共有を再マウントすることは本当に私にとってはオプションではありません。私の前提は、apc opcodeのキャッシュは実際にはクリアされていないが、私はapc.phpで統計を見ていて、私はフラッシュスクリプトを実行した後にキャッシュが再構築されているように見える。私は数日間これをしてきたし、簡単な問題のトラブルシューティングは大きな頭痛に変わった。誰かが他のもののアイデアを見たり、自分のコードの変更をより即座にすることができますか?
トラフィックの多いプロダクションサーバーで直接ファイルを編集しているのはなぜですか? – GolezTrol
トラブルシューティングの問題はサンドボックス環境では発生しないため、ライブサーバーでのみ発生します。 – sphoid
したがって、apcキャッシュをクリアして、両方のWebサーバーでnginxを再起動しています...あなたのPHPにいくつかの目に見えないHTMLを挿入することで、検索範囲を絞り込むことができます。例えば'<! - newcode - >'フロントエンドでソースを見るときに表示されるなら、あなたの新しいコードが実行されていることを知っているので、APCとnginxを除外することができます。エラーログへの書き込みはバッファリングされているだけなので、ログを書き留める際に古いエントリが表示されることがありますか? –