Post by GonzaloPost by Oscar GarciaPost by Gonzaloy ¿existe algún número máximo de archivos que puede haber en una
directorio?.
http://en.wikipedia.org/wiki/Ext3#_note-0
Ya veo, que sea variable es el problema, ¿hay alguna forma de saber cuantos
archivos puede tener un directorio de mi servidor? ¿hay alguna función PHP
para averiguar esto?
Te puedo asegurar que más de los que necesites.
En caso de necesitar más siempre puedes usar las técnicas que te comenté.
Por ejemplo... a la hora de buscar un archivo no lo hagas por su nombre
de archivo (o el identificador de usuario), hazlo por su firma md5 (por
ejemplo):
function ruta_md5 ($archivo) {
$md5 = md5 ($archivo);
return substr ($md5, 0, 3) .'/'. substr ($md5, 3, 3) .'/'.
substr ($md5, 6, 3) .'/'. substr ($md5, 9, 3) .'/'.
substr ($md5, 12, 3) .'/'. substr ($md5, 15, 3) .'/'.
substr ($md5, 18, 3) .'/'. substr ($md5, 21, 3) .'/'.
substr ($md5, 24, 3) .'/'. substr ($md5, 27, 3) .'/'.
$md5 .'-'. $archivo;
}
Cada carácter md5 es un caracter hexadecimal. Si lo agrupamos de 3 en 3
estaremos haciendo 16*16*16 = 4096 combinaciones, que es un número que
soporta perfectamente cualquier sistema de archivos (ntfs son 2^32-1 o
ext3 que serían por defecto 524.288 para un volumen de 4 gigas, aunque
se pueden modificar al número deseado al crear la partición con el
modificador -N de mkfs.ext3). Ojo.. fat12 no lo soportaría, pero fat16 y
fat32 sí (65Kficheros y 256Mficheros respectivamente).
Bien, con cada nivel de directorio de 3 letras y un total de 10 niveles
de directorio tenemos 4096^10 directorios que pueden ser creados...
luego lo multiplicaríamos por la cantidad de archivos que podemos
guardar en cada directorio (despreciable a estas alturas).
Sólo en directorios tenemos 1,33 * 10^36 vamos.. un uno seguido de 36
ceros.. si crearas 1000 directorios distintos por segundo.. tardarías
aproximadamente 42 cuatrillones de años en llegar al límite (yo creo que
antes agotarías el espacio en disco :).
¿Te parece suficientemente potente un algoritmo así? :)
Ya que no creo que llegues a esos extremos quizá vendría bien sólo un
par de niveles... la función md5 se usa para dispersar los datos entre
los directorios de manera más o menos equitativa (para no ser influida
por la distribución común de letras en cierto idioma o sistema de
numeración).
Saludos.
--
Óscar Javier García Baudet
LinaresDigital
http://redstar.linaresdigital.com/