Question

J'ai un site qui permet aux gens de télécharger des fichiers à leur compte, et ils sont affichés dans une liste. Fichiers pour tous les utilisateurs sont stockés sur des serveurs différents, et ils se déplacent en fonction de leur sont populaires (son un site d'hébergement de fichiers).

Je veux ajouter la possibilité pour les utilisateurs de regrouper les fichiers dans des dossiers. Je pourrais continuer la voie classique et créer des dossiers physiques sur le disque dur, pour chaque utilisateur sur le serveur, et les transversales comme prévu. L'inconvénient de c'est les fichiers de l'utilisateur seront liés à un seul serveur. Si ce serveur démarre en cours d'exécution de l'espace (ou de nombreux fichiers sont populaires en même temps), il devient très difficile à atténuer.

Ce que je pensais à faire est de garder la nature sans état des fichiers, leur permettant d'être stockés sur l'un des serveurs de fichiers, et simplement stocker l'ID de dossier (en plus de l'ID utilisateur qui possède le fichier) avec chaque fichier la base de données. Ainsi, lorsqu'un utilisateur décide de déplacer un fichier, il ne va nulle part physiquement déplacé, vous changez simplement l'ID de dossier dans la base de données.

Est-ce une bonne idée? J'utilise PHP et MySQL.

Était-ce utile?

La solution

Oui, il est.

Je ne vois aucun inconvénient, sauf peut-être plus de requêtes à la base de données, mais avec l'indexation correcte de l'identifiant du dossier parent, ce sera probablement plus rapide que l'accès au système de fichiers directement.

Autres conseils

Oubliez les dossiers et de laisser les utilisateurs balise leurs fichiers, plusieurs balises par fichier. Puis laissez-les voir fichiers marqués X . Ce n'est pas très différent de mettre en œuvre que des dossiers virtuels, mais est beaucoup plus flexible pour les utilisateurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top