5

symfonyキャッシュシステムは同じディレクトリ制限内のext232000ファイルを処理しますか?

私は80000人のユーザーを持っていて、彼らのプロファイルをキャッシュしたいのですが、symfonyキャッシュシステムはext2の制限を処理しますか?

同じ問題に直面する他の人たちにも投稿しています。

4

1 に答える 1

1

私の答えが正しいかどうかは100%確信が持てませんが、ファイルへのパスを返すPROJECT/lib/symfony/cache/sfCacheFile.class.phpメソッドがあります。ファイルシステムsfCacheFile::getFilePath()の制限に対する保護はないようです。ext2

しかし、非常に簡単な解決策があります - そのクラスをオーバーライドします:

  1. 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
    
  2. そのクラスを作成し、それが拡張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);
        }
    

    }

  3. キャッシュの消去:./symfony cc

ファイルシステムを破壊するには、まったく同じ2 文字/数字で始まる 32000 個のキャッシュ キーが必要です。

于 2010-04-22T21:29:04.360 に答える