IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils MySQL Discussion :

stocker les photos sur mysql ou pas?


Sujet :

Outils MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut stocker les photos sur mysql ou pas?
    bonjour a tous,

    j'ai une petite quetion, je fais un espace membre sur mon site, et ma question est:
    qu'est qui est mieux?
    stocker les photos des membres sur la table membre msql?
    ou
    stocker les photos sur le serveur et inserer simplement le liens des photos sur la table membre?

    tout en sachant qu'il y aura de plus en plus de memebre, et max 4 photos par memebre

    merci pour vos conseil

    -Chico-

  2. #2
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    tu dois impérativement stocker tes photos dans un dossier

    Ta base va très vite grossir sinon
    et selon ton hébergeur, la taille de la base est limitée à quelques dizaines de Mo

  3. #3
    Membre actif
    Avatar de Wormus
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 276
    Points
    276
    Par défaut
    Si c'était moi je placerai les photos sur le serveur et juste les liens dans la bdd
    ça m'a tjr semblé logique d'utiliser cette solution et je savais pas que stocker les photos sur la bdd ça se faisait !!

    J'ai vu récemment qq'un qui mettais ses photos sur sa bdd sans que cela choc personne donc en fait je sais plus trop

    Donc moi aussi ça m'interresserais de savoir ça et aussi pk telle ou telle solution ??

  4. #4
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    Hello,

    hors de la base, ça me semble impératif, pour divers raisons :
    • Si stockées dans la base MySQL, à chaque fois qu'un internaute va vouloir télécharger l'image, il va falloir que le script PHP la "télécharge" à son tour depuis la base de données... ce qui implique une grosse consommation en ressources.
    • Les requetes SQL sont souvent limitées à une taille de 1Mo, il se peut donc que tu n'arrives pas à charger certaines grosses images en base de données.
    • Apache se charge d'envoyer les bons entètes HTTP qui permette au navigateur de gèrer son cache. Ce qui implique un affichage fortement accéléré pour le client, moins de bande passante consommée pour le serveur, un slot Apache libéré immédiatement, voir même moins de hits HTTP si l'entete "expires" est utilisé. Bien sûr tu peux le faire en PHP, mais ça peut être assez complexe pour quelqu'un qui ne connait pas.


    Concernant la peur du nombre de fichiers dans le dossier, une solution bien souvent utilisée est d'ajouter des niveaux de répertoire.
    Par exemple en stockant le fichier "bidule.jpg" à l'adresse "images/b/i/bidule.jpg".

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    merci pour vos reponses,
    oui g vu qu'on pouvais stocker les photos sur un bdd en binary mais ca je savais pas que les hebergeurs pouvais limiter l'espace de la bdd a peu de Mega

    donc d'apres vos reponse, j'opterai plutot pour creer des repertoires sur le serveur pour y stocker les photos


    alors alons y pour la 2eme solution
    merci encore


  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Le seul gros intérêt du stockage dans la BDD est la simplification ultime de l'accès aux images.
    Il faut voir ce que tu préfères : passer du temps à bétonner la sécurité d'accès à tes fichiers images ou bien passer du temps à gérer l'extraction des images depuis ta BDD.

    Non, ce n'est pas la taille de la BDD qui est limitée à 1 Mio mais les requêtes ^^
    D'ailleurs Kioob, aurais-tu davantage d'infos stp ? Je ne m'en suis jamais soucié et je n'ai jamais eu de soucis...

  7. #7
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    kirkis : cf le paramêtre "max_allowed_packet" de MySQL :
    max_allowed_packet : La taille maximale d'un paquet.

    Le buffer de message est initialisé avec net_buffer_length octets, mais peut grandir jusqu'à max_allowed_packet octets lorsque nécessaire. Cette valeur est par défaut petit, pour intercepter les gros paquets, probablement erronés.

    Vous devez augmenter cette valeur si vous utilisez de grandes colonnes BLOB. Cette valeur doit être aussi grande que le plus grand BLOB que vous utiliserez. Le protocole limite actuellement max_allowed_packet à 16 Mo en MySQL 3.23 et 1 Go en MySQL 4.0.
    Donc si je comprends bien, ça n'affecte pas que la taille de la requete, mais également chaque ligne de résultat d'un SELECT.

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449

  9. #9
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Points : 156
    Points
    156
    Par défaut
    Pour ma part je stocke les photos sur le serveur avec la reference dans la bdd, car mon ami la doc mysql me l'a dit


    7.2.17. Autres conseils d'optimisation
    "Avec un serveur web normal, les images doivent être stockées dans des fichiers. C'est à dire, ne stockez qu'une référence au fichier d'image dans la base. La raison principale à cela est qu'un serveur web est bien meilleur pour mettre en cache des fichiers que le contenu d'une base de données. Il est donc plus rapide si vous utilisez des fichiers."

  10. #10
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    le seul avantage que je vois a les mettre en db, c'est lors du delete from user where... tu supprimes les fotos associées alors que ds un dossier tu dois gerer ca .
    par exemple pour un menu tu peux stocker le nom du menu une icone etc en BDD et créer une fonction qui te génère le menu comme tu aura bcp de petites images apres un certains temps tu saura plus laquel est utilisé laquelle ne l'est plus.
    en plus tu stocks un lien absolu ou relatif?
    car si tu as un environement dvlp, test et prod...

  11. #11
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Dans le cas de stockage d'image dans la BDD il faut savoir que c'est possible de le faire. Mais ce n'est pas une raison suffisante pour le faire. Le mieux est de stocker des fichiers physiques sur le disque et leurs références en BDD, c'est une question de bon sens.

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Le seul avantage de tout mettre en bd est la facilité de replication, meme s'il existe des outils pour synchroniser des systèmes de fichiers. Pareil pour une migration/backup.

Discussions similaires

  1. Stocker les Blobs sur un autre serveur ?
    Par jjcasalo dans le forum Administration
    Réponses: 1
    Dernier message: 17/03/2009, 22h12
  2. Réponses: 1
    Dernier message: 22/05/2008, 13h23
  3. Comment bloquer les photos sur mon site
    Par footeuse13 dans le forum Sécurité
    Réponses: 5
    Dernier message: 08/08/2007, 16h54
  4. stocker les profils sur le serveur
    Par ptirouquin dans le forum Réseau
    Réponses: 8
    Dernier message: 16/07/2007, 16h32
  5. Réponses: 3
    Dernier message: 26/07/2006, 20h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo