No estoy 100% seguro de si mi respuesta es correcta, pero en PROJECT/lib/symfony/cache/sfCacheFile.class.php
hay un método: sfCacheFile::getFilePath()
que devuelve una ruta a un archivo. Parece que no hay ninguna protección contra las limitaciones del sistema de archivos ext2
.
Pero hay una solución muy simple - omiso de esa clase:
En PROJECT/apps/APP/config/factories.yml
configurar su propia clase caché:
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
Ahora crear esa clase y asegurarse de que se extiende sfFileCache
y sobrescribe 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);
}
}
Borrar caché: ./symfony cc
Ahora necesita 32000 claves de caché que se inicia con exactamente el mismo dos letras/dígitos para aplastar a su sistema de archivos.
Esa es la idea; D gracias – belaz