Ha la cache di symfony handle di file system ext2 32000 file nella directory stessa limitazione?
Domanda
Fa il sistema di cache symfony maniglia ext2 32000 file nella directory stessa limitazione?
Ho 80000 utenti e voglio mettere in cache i loro profili, ma faccio symfony manico sistema di cache la limitazione ext2?
Sono anche distacco per gli altri che si troveranno ad affrontare lo stesso problema.
Soluzione
Io non sono sicuro al 100% se la mia risposta è corretta, ma in PROJECT/lib/symfony/cache/sfCacheFile.class.php
c'è un metodo: sfCacheFile::getFilePath()
che restituisce un percorso di un file. Sembra che non ci sia alcuna protezione contro le limitazioni del file system ext2
.
Ma c'è una soluzione molto semplice - override di quella classe:
-
In
PROJECT/apps/APP/config/factories.yml
impostato la propria classe di cache: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
-
Ora creare quella classe e assicurarsi che si estende
sfFileCache
e overridegetFilePath()
# 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); }
}
-
Cancella cache:
./symfony cc
Ora è necessario 32000 chiavi della cache che si avvia con la stessa identica due lettere / cifre per schiacciare il filesystem.