トップページのFTPによるライブ画像で、競合による画像乱れを対策しました。最新より一つ古い画像を表示し、競合を回避する対策です。
FTPでライブカメラを構築するとき、画像ファイルをFTP転送中に参照されると、競合により画像が損傷することが知られています。
簡単に構築する為、常に同じファイル名でアップし、その画像ファイルを表示するようにしていました。競合が発生する可能性がありますが、アクセスは多くないと予想していたので、画像の損傷は然程発生しないのではないかと考えていました。
ところが最近アクセスが増えてきた為か、頻繁に画像が損傷するようになりました。そこで対策を考えてみました。
CG-WLNCMNGV2のFTPモードは、上書きでの転送以外に、「基本ファイル名+番号.jpg」でFTP転送することができます。番号は1から最大 1024の間でインクリメントします。そこでその「基本ファイル名+番号.jpg」で転送し、表示する画像ファイルは転送中かもしれない最新ファイルをさけ、一つ古い画像ファイルを表示するようにします。競合はこれで回避できます。
簡単なロジックなのでカスタムブロックにPHPスクリプト10行強で実現できました。画像ファイルの更新時刻を取得していますので、おまけにlive画像の下にそれを表示するようにしました。