2010-12-14 5 views
1

Fondamentalement, j'ai une forme simple que l'utilisateur utilise pour le téléchargement de fichiers. Les fichiers doivent être stockés dans le répertoire/files/avec certains sous-répertoires pour diviser presque également les fichiers. par exemple. /files/sub1/sub2/file1.txtStructurer des fichiers sans db

De même, je n'ai pas besoin de stocker des fichiers égaux (par nom de fichier).

J'ai ma propre solution. Calculer sha1 à partir du nom de fichier. Prenez les 5 premiers symboles - abcde par exemple et placez le fichier dans/files/a/b/c/d/e/cela fonctionne bien, mais donne la situation quand un dossier contient 4k fichiers, 2e fichiers 6k. Est-il possible de faire en sorte que les fichiers soient plus proches les uns des autres? Le nombre maximum de fichiers peut être 10 ou 10k.

Merci pour toute aide.

P.S. Peut-être que j'ai expliqué quelque chose de mal, donc encore une fois :) Tâche est simple - vous avez seulement html et php (sans aucun db) et le répertoire des fichiers où vous devez stocker uniquement les fichiers téléchargés sans données propres. Vous devriez développer un script qui peut gérer le stockage des téléchargements dans le répertoire des fichiers sans stocker les doublons (par nom de fichier) et diviser les fichiers téléchargés par sous-répertoires par nombre de fichiers dans chaque répertoire (les fichiers optimaux doivent être proches les uns des autres).

+4

Je ne m'inquiéterais pas à ce sujet. La distribution devrait être assez aléatoire en raison du travail de hachage. – ceejayoz

+0

peut-être mieux de calculer sha1 à partir de l'horodatage? – neoneye

+0

l'horodatage ne fonctionnera pas, car je dois trouver rapidement le fichier en double par nom de fichier et ne pas stocker un fichier téléchargé s'il existe déjà. –

Répondre

0

Je ne sais pas pourquoi vous le voulez bien. Mais si vous devez vraiment le faire de cette façon, je vous suggère de définir une limite combien d'octets sont stockés dans chaque dossier. Chaque fois que vous devez enregistrer les données que vous ouvrez un journal avec

  1. le sous courant
  2. le nombre total d'octets écrits dans ce répertoire

Si necesary vous créez un nouveau sous diretory (vous coulduse le timestemp actuel, car il ne répétera pas) et réinitialiser le bytecount Ensuite, vous enregistrez le fichier et incrémenter le nombre d'octets par le nombre d'octets écrits.

Je doute fortement que cela en vaille la peine, mais je ne sais pas vraiment pourquoi vous voulez distribuer les fichiers de cette façon.

+0

pas de db, pas de journal. seulement formulaire html et une fonction qui vérifie si ce fichier a déjà été téléchargé (par nom de fichier) et le stocke. –

Questions connexes