framworks, outils, conseil - enregistrer fichiers serveur

zantesk
Invité n'ayant pas de compte PHPfrance

06 nov. 2013, 18:32

Hello à tous,

Voila le besoin. J'ai des milliers d'utilisateurs et autant de fichiers associés, qui devront être stocké sur le serveur.

J'ai donc en base de donnée toutes les infos "utilisateurs" et il me reste à sauvegarder sur le serveur les fichiers qu'un utilisateur pourra uploader.

Je cherchais donc une solution pour pouvoir bien faire ceci.


- >J'avais exclu l'enregistrement en base de donnée des fichiers binaires, bien trop lourds à force et diverses complications.

Ce que je désirai c'est d'enregistrer les fichiers quelques part sur le serveur et inscrire les chemins vers ces fichiers en BDD, associé bien sur à l'utilisateur l'ayant déposé.

-> Quel solution ?

Je pensais à ce que chaque utilisateur ais ces fichiers dans un dossier, mais comment concevoir la logique des "dossiers" ?
En effet, on ne va pas mettre tout les fichiers de tout utilisateurs dans un dossier, ça va saturer.


-1 : créer un dossier pour chaque utilisateur ? On aura un seul chemin en BDD pour les fichiers utilisateurs (ou alors faut-il spécifier tout les chemins des fichiers et non pas celui du dossier en BDD ?). de ce fait il faut une logique, architecture, de dossier (on ne va pas mettre 1000 dossiers dans un dossiers, ça sera long à parcourir)

-2 : On mets des centaines de fichiers d'utilisateurs dans un dossier, puis arriver à une limite fixé, on recréé un dossier. On spécifie en base tout les chemins des fichiers associé aux utilisateurs. La encore il faudra à force une logique d'architecture des dossiers.


Comment feriez-vous ?

Car il peut se poser des problèmes. Admettons qu'un utilisateur quitte le service de l'application et supprime tout, donc ses images. En "1", le dossier associé sera supprimé, mais il ne faut pas supprimer les sous-dossiers. Pour éviter cela, les images ne devront être positionner qu'en tout dernier éléments de chemin possible (feuille). En "2", à force d'avoir des fichiers on aura aussi plein de dossier et on se retrouvera dans le cas "1".

Existe-t-il un frameworks, outils, etc, qui sache faire tout ceci (mettre des verrous sur des dossiers implicitement etc), offrant des méthodes où il y a juste à déposer un fichier, il en retourne le chemin et le tour et jouer, avec bien sur, une bonne logique d'architecture de dossier.

J'espère avoir été bien explicatif :D

Merci d'avance :)

Eléphant du PHP | 453 Messages

26 déc. 2013, 18:12

A ma connaissance, je ne connais pas de framework implémentant ce genre de logique. C'est à toi de le faire. Certains CMS ont une logique. WP classe par année et par mois je crois.

Perso, je ferai ceci :
si le dossier de l'utilisateur n'existe pas, je le crée et je lui donne les droits (chmod).
- Comment se nome ce dossier ? Il faut qu'il soit unique ! Donc l'ID du user.
- Où créer ce dossier ? A l'intérieur du dossier uploadedfile par exemple et dans le rep public/.
ex : /public/uploadedfile/id_user/

Je ne pense pas que j'implémenterai des sous-dossiers. Pourquoi ? trop chiant à gérer pour pas grand chose finalement. En base tu as les nom des fichiers avec le chemin. Si en base tu oublies d'ajouter une propriété d'un fichier "uploadé" (ex : date uploade). En parsant le dossier du user, tu auras plus de facilités à récupérer la donnée. Admettons que tu aies à implémenter cette fonction supprimer les fichiers datant plus d'un/deux/trois/quatre/etc. an(s) ou cette fonction : supprimer les fichiers dont le poids est supérieur à 500ko. Ca va être simple (paye ta récursivité...) si ton organisation de fichiers est ainsi :
/uploadedfile/id_user/psd/
/uploadedfile/id_user/jpg/
/uploadedfile/id_user/doc/
/uploadedfile/id_user/png/
etc.
|*()
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia