-
file_exists or not ?
Salut tout le monde !
Je me pose une petite question concernant la charge serveur de la fonction file_exists :
Sur un site je voudrais créer des présentations de maison avec la possibilité de pouvoir poster plusieurs images de la maison. Je m'étais dis, pour alléger la base, que ca serait pas mal de ne justement pas stocker les noms de fichiers dedans, et de renommer ces images avec un nom comme $id1.jpg, $id2.jpg, $id3.jpg, puis de de faire un file_exists lors de la consultation de la page pour voir si les fichiers existent bien, auquel cas on affiche les images. Seulement, je suis pas sûr du bien fondé de l'opération . Est-ce que vous pouvez me donner votre avis s'il vous plait ? Est-ce que ca charge le serveur notamment de faire des vérifications de file_exists à tout va ? Si oui, quelle pourrait être l'alternative ?
Merci par avance pour votre aide, fort appréciée !!!
-
Je ne serai pas te répondre sur la montée en charge de cette fonction, d'ailleurs je pense pas que dans al section "Débuter" soit propice.
Mais parcontre je ne voie pas l'intérêt de ne pas stocker les chemins des images dans la bdd, le gain au départ me semble faible ( aprés je sais pas le nombre d'enregistrement de ton site ).
Ce que je ferai moi c'est un panneau d'administration de l'upload, la personne envoie ces images dans son repertoire, et tu fait un mini lien sur les images.
En gros
La personne crée un compte, ca lui crée un repertoire genre /upload/pseudo
La personne envoie des images tu les stock dans /upload/pseudo et dans ta bdd tu ne met que /nom_de_l'image.
Du coup à l'affichage tu récupére des données deja définies:
/upload tu le choisi
/pseudo est fixe pour l'utilisateur et tu a forcément cette donnée lors de travaux sur la bdd
/nom_de_l'image et bien tu la stocké.
En plus tu peux largement utiliser un simple champ texte pour X image, un explode() te permettant de découper le cotnenu en X chemin, tu peux même te permettre de viré l'extension dans la bdd, si tu passe par GD pour redimensionner tes photos.
(J'utilise cela perso je réduit et mets toutes les images en jpg peut importe ma source de base ).
Donc en résumé t'aura forcément des images qui existent, car elle ne seront stockée en bdd que si l'uplaod marche (test à faire) et tu aura une petite donné à stocké (mafleur1-garage-salledebain qui donneront /upload/monnom/mafleur1.jpg ect)
Enfin cela ne reste qu'un simple avis, et au pire si l'appli tourne tu pourra toujours l'optimiser par la suite avec pour le coup plus d'informations sur la charge existante et avec un retour utilisateur.
-
salut ! merci pour ta réponse! Le truc c'est que je voudrais justement anticiper un très grand nombre de maisons référencées dans la base, et donc un très grand nombre de photos (8 photos par maison). D'où ma volonté de tenter une approche qui me permet de ne pas stocker les noms des fichiers. Sinon, oui je passe par GD pour resizer et renommer en jpg.
Maintenant le coup de file_exists c'est peut-être pas viable non plus...
Reste en effet la possibilité de jouer avec les répertoires et de nommer specifiquement charque répertoire d'upload de photos du nom de l'id de la maison par exemple, puis de lire le répertoire...
-
Si tu veux pas stocker les images alors oui je te conseil une lecture du repertoire, plutot que file_exits(), ca me semble plus performant.
-
il y a 2 optiques par rapport à ce que tu proposes et surement d'autres solutions derrière ...
Vérifier a l'aide de file_exists prend du temps et d'un autre coté stocker le nom du fichier prend de la place en bdd
après à ce niveau là il faut faire un choix
de mon coté j'ai un cas semblable au tiens et comme ma base est déjà conséquente j'ai opté pour le file_exists
après c'est à toi de voir
-
salut !
Oui mais finalement, on peut se passer du file_exists et du nom de l'image dans la DB.
Tu crées un répertoire du nom de l'id de ton sujet. Tu y envoies les images puis tu lis le répertoire.