Bug(バグ) #3357
未完了./symfony cc を実行しても web/cache/ ディレクトリ以下に生成されたキャッシュが削除されない
0%
説明
現象¶
ブラウザ等でメンバー画像 (no_image ではない) などユーザーが投稿した画像のサムネイルを表示すると web/cache/ ディレクトリ以下にサムネイル画像のキャッシュが生成されるが、ここに生成された画像が ./symfony cc コマンドによって削除されない状態となっている。
原因¶
web/cache/ ディレクトリのキャッシュ削除は opApplicationConfiguration::clearWebCache() メソッドによって行われていた。このメソッドは task.cache.clear イベントの発生によって駆動するよう設計されているが、現状 task.cache.clear イベントは下記の理由により発生する事がないため、結果として一部のキャッシュが削除されない現象が発生している。
task.cache.clear イベントは ./symfony cc コマンド (sfCacheClearTask クラス) 実行時に アプリケーション毎に (pc_frontend, pc_backend, mobile_frontend など) 複数回呼び出されるイベントである。その仕組みは、symfony標準のディレクトリ階層の
- cache/
- pc_frontend/
- prod/
- dev/
- pc_backend/
- ...
- pc_frontend/
に基づいて、 cache/ ディレクトリ直下 に存在するアプリケーション名 (この場合、pc_frontend と pc_backend が存在する) ごとに task.cache.clear イベントを発生させるものとなっている。
しかし現状のOpenPNEでは、 #957 の修正によって cache/ ディレクトリの階層構造がUNIXユーザー単位で分離されるようになり
- cache/
- www-data/
- pc_frontend/
- dev/
- prod/
- pc_frontend/
- john/
- pc_frontend/
- dev/
- prod/
- pc_frontend/
- www-data/
となっているため、www-data や john といったアプリケーションは存在しないといった判断され task.cache.clear イベントが実行されない。
修正内容¶
修正内容を記入