symfonyキャッシュシステムは同じディレクトリ制限内のext232000ファイルを処理しますか?
私は80000人のユーザーを持っていて、彼らのプロファイルをキャッシュしたいのですが、symfonyキャッシュシステムはext2の制限を処理しますか?
同じ問題に直面する他の人たちにも投稿しています。
私の答えが正しいかどうかは100%確信が持てませんが、ファイルへのパスを返すPROJECT/lib/symfony/cache/sfCacheFile.class.php
メソッドがあります。ファイルシステムsfCacheFile::getFilePath()
の制限に対する保護はないようです。ext2
しかし、非常に簡単な解決策があります - そのクラスをオーバーライドします:
PROJECT/apps/APP/config/factories.yml
独自のキャッシュ クラスを設定します。
default:
# Others factories (if any)
view_cache:
class: myOwnFileCache
param:
automatic_cleaning_factor: 0
cache_dir: %SF_TEMPLATE_CACHE_DIR%
lifetime: 86400
prefix: %SF_APP_DIR%/template
そのクラスを作成し、それが拡張sfFileCache
およびオーバーライドされることを確認しますgetFilePath()
# PROJECT/lib/PROJECT/cache/myOwnFileCache.class.php
class myOwnFileCache extends sfFileCache {
protected getFilePath($key) {
/*
Convert from: abcdef
to: a/b/abcdef
*/
$key = substr($key, 0, 1) . DIRECTORY_SEPARATOR . substr($key, 1, 1) . DIRECTORY_SEPARATOR . $key;
return parent::getFilePath($key);
}
}
キャッシュの消去:./symfony cc
ファイルシステムを破壊するには、まったく同じ2 文字/数字で始まる 32000 個のキャッシュ キーが必要です。