PHPでファイルの書き込みが中途半端に終了する

symfony で sfFileCache を使っていると、テンプレートなどのキャッシュが中途半端な状態で保存される現象がたまに発生する*1symfony の sfFileCache の read() は単純にファイルの中身を unserialize() してるだけなので、キャッシュから復元されたデータも中途半端と言うことになって、その後の動作がおかしくなる。

sfFileCache には writeControl と readControl というパラメータがあって、それぞれONにするとキャッシュ read/write した後にベリファイをとってくれるようになる。パフォーマンス的にはひどく悪くはならないようなので、ひとまずON。

ていうか、こんなオプションがあるくらいだから、ファイルキャッシュが中途半端になるのは織り込み済みということだよな*2
symfony には、このほかに SQLite を使ったキャッシュストレージや、実験的だけど memcached を使うものもある。この辺に移行してみるかな。

関連ぽいエラーのチケット

#1552 (inconsistent cache state causes completely blank screen for user) - symfony - Trac
http://trac.symfony-project.com/trac/ticket/1552

*1:エラーログにメッセージが残らないので理由が良くわからないんだけど、サーバへの負荷と無関係では無いようだ

*2:コメントに「それでも完全に確認できるわけじゃない...」みたいに書いてあるし