2010-04-22 12 views

Antwort

1

Ich bin nicht 100% sicher, ob meine Antwort korrekt ist, aber in PROJECT/lib/symfony/cache/sfCacheFile.class.php gibt es eine Methode: sfCacheFile::getFilePath(), die einen Pfad zu einer Datei zurückgibt. Es scheint, dass es keinen Schutz gegen Einschränkungen von ext2 Dateisystem gibt.

Aber es ist eine sehr einfache Lösung - außer Kraft setzt diese Klasse:

  1. In PROJECT/apps/APP/config/factories.yml stellen Sie Ihre eigene Cache-Klasse:

    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. nun diese Klasse erstellen und sicherstellen, dass es sich sfFileCache und überschreibt 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. Cache löschen: ./symfony cc

Jetzt müssen Sie 32000 Cache-Schlüssel, die mit den exakt gleichen zwei Buchstaben/Ziffern beginnen Ihr Dateisystem zu vernichten.

+0

Das ist die Idee, D danke – belaz