画像やリンクが無効になっている可能性もあるのでご了承下さい。
はじめに
先日とある記事にてコメントを頂いた際、どうもバグってコメントが送信されないということで Twitter にご報告を頂いた。
コメント通知メールが届いていたので正常にコメントの投稿こそされておりデータベースにも記録されていたが表示されないらしき物だった為に真っ先にキャッシュ周りを調べてみた。
原因を探る
当サイトは WordPress の動作を出来るだけ速くしたいということでサーバには Nginx を用い、FastCGI Cache を用いて PHP が出力したデータをキャッシュさせている。これにより毎回データベースへのアクセスをしなくても良いし PHP が動的にコンテンツを生成する処理を軽減出来る為だ。
しかし良い事ばかりでは無く、確かに高速化される物のキャッシュ制御という運用上の問題も出てきてしまうので結構面倒臭い。
面倒臭い事は分かっているから恐らく今回もまたキャッシュ周りであろう思ったので「真っ先に――」となった。
原因
キャッシュ制御はサーバ上の問題ではなくて WordPress で使用しているプラグイン「Nginx-Helper」にあった。
つい先日バージョンが 2 系にメジャーバージョンアップしてさらに 2.0.1 とマイクロバージョンも上がったところ。
検証環境であれこれテストした結果、バージョンが 2.0.0 と 2.0.1 で発生していた問題となりコメントが投稿されたときのパージ処理が行われて居ない事が判明した。
そこで Nginx-Helper 1.9.11 をダウンロードしてきてインストールしてまたテストしてみると、こちらは筆者が期待する動作をしてくれていた。
動作のおかしいログ
「Status Changed」までで止まってしまい、その先のパージ処理が行われない。
これが Nginx-Helper 2.0.0~2.0.1 の挙動。
2018-12-13 15:01:24 | INFO | * * * * *
2018-12-13 15:01:24 | INFO | * Blog :: ぶっちろぐ ( 1 ).
2018-12-13 15:01:24 | INFO | * Post :: PHP 7.3 にしたあと TinyTiny RSS で発生するエラーを修正 ( 42329 )
2018-12-13 15:01:24 | INFO | * Comment :: 2106.
2018-12-13 15:01:24 | INFO | * Status Changed from to approved
正常動作しているログ
Nginx-Helper 1.9.11 だと「Status Changed」のあとにコメントが承認されたという処理に移り、該当記事のキャッシュがパージされる処理に進んだ。
「Function purgePost BEGIN ===」以下に purge する為に URI にアクセスするログがダーっと流れる。
2018-12-13 14:50:41 | INFO | * * * * *
2018-12-13 14:50:41 | INFO | * Blog :: ぶっちろぐ (1).
2018-12-13 14:50:41 | INFO | * Post :: PHP 7.3 にしたあと TinyTiny RSS で発生するエラーを修正 (42329).
2018-12-13 14:50:41 | INFO | * Comment :: 2104.
2018-12-13 14:50:41 | INFO | * Status Changed from to approved
2018-12-13 14:50:41 | INFO | * Comment (2104) approved. Post (42329) purging...
2018-12-13 14:50:41 | INFO | * * * * *
2018-12-13 14:50:41 | INFO | * * * * *
2018-12-13 14:50:41 | INFO | * Blog :: ぶっちろぐ (1).
2018-12-13 14:50:41 | INFO | * Custom post type 'post' :: PHP 7.3 にしたあと TinyTiny RSS で発生するエラーを修正 (42329).
2018-12-13 14:50:41 | INFO | * CPT 'post' (42329) published or edited and its status is published
2018-12-13 14:50:41 | INFO | * * * * *
2018-12-13 14:50:41 | INFO | Function purgePost BEGIN ===
そんなわけで
この辺の不具合が修正されたというアナウンスが出るまでは 1.9.11 のバージョンを使用していこうと思う。
滅多にコメントが付く事は無いが、いざって時にコメントをして頂く方を困惑させるわけにはいかないので。
コメント