Aynı dizin sınırlama symfony önbellek dosya sistemi kolu ext2 32000 dosya mı?

1 Cevap php

Aynı dizin sınırlama symfony önbellek sistemi kolu ext2 32000 dosya mı?

Ben 80000 kullanıcımız var ve ben onların profillerini önbelleğe istiyorum ama symfony önbellek sistemi ext2 sınırlama ele?

Ben de aynı sorunla karşı karşıya gelecek, diğerleri için post ediyorum.

1 Cevap

Benim cevap doğru olup olmadığını% 100 emin değilim ama PROJECT/lib/symfony/cache/sfCacheFile.class.php bir yöntem vardır: sfCacheFile::getFilePath() that returns a path to a file. It seems that there is no any protection against limitations of ext2 dosya sistemi.

Ama çok basit bir çözüm var - bu sınıfı geçersiz:

  1. PROJECT/apps/APP/config/factories.yml kendi önbellek sınıf set içinde:

    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. Şimdi bu sınıfı oluşturmak ve emin sfFileCache ve geçersiz kılmaları getFilePath() uzanır yapmak

    # 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. Net cache: ./symfony cc

Şimdi dosya sistemini ezmek için with the exact same iki harf / rakam başlar 32000 önbellek tuşları gerekir.