Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1580 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  optimisation: affichage de photos : readdir ou requete sql ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

optimisation: affichage de photos : readdir ou requete sql ?

n°2103420
Pascal le ​nain
Posté le 26-09-2011 à 18:59:57  profilanswer
 

Bonjour,
 
Je cherche à faire un petit slideshow sur un site à partir de photos qui sont dans un dossier.
 
J'ai deux choix :
 
1- Utiliser opendir et readdir pour parcourir le dossier, et afficher les images en fonction.
+ La premiere solution présentant l'avantage de ne pas se soucier de la synchronisation des chemins dans une base.
- Plusieurs appels systèmes. Peut être lent ?
 
2- Stocker les chemins des images dans une base MySQL, et faire une requete pour aller chercher ces chemins.
+ Simple à récupérer
- Maintenance lourde et source d'erreurs
(- ?) MySQL fait-il autant d'appels systèmes qu'il y a de fichier ? ou a-t-il un cache dans sa ram ?
 
Je voudrais savoir la méthode que vous recommanderiez.
 
Je les ai testées et chronométrées toutes les deux, et j'obtiens des résultats sensiblement identiques, aux alentours de 5ms, sur ~180ms page complète
 
Qu'en pensez-vous ?
 
Merci d'avance ;)


Message édité par Pascal le nain le 26-09-2011 à 19:03:49
mood
Publicité
Posté le 26-09-2011 à 18:59:57  profilanswer
 

n°2103433
NewsletTux
<Insérez ici votre vie />
Posté le 26-09-2011 à 20:06:11  profilanswer
 

hello
ça dépend du traitement que tu en fais derrière ...
de toi à moi je serais tenté de dire "base mysql", c'est moins lourd de faire une requête qu'un appel de fichier.
après il te reste une synchro à faire pour upgrader mysql , virer les fichiers qui ont disparu et ajouter les nouveaux.


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°2103520
Pascal le ​nain
Posté le 27-09-2011 à 12:02:14  profilanswer
 

Le contenu MySQL étant sur le disque, ne fait-il pas d'appels de fichiers ?


Message édité par Pascal le nain le 27-09-2011 à 12:02:26
n°2103533
NewsletTux
<Insérez ici votre vie />
Posté le 27-09-2011 à 13:03:58  profilanswer
 

oui, tu as raison, mais la base mysql est montée en ram et l'accès à la base mysql est un accès à 3 fichiers (la base, la structure et les index ou je ne sais plus) et en chargeant en ram cette base, tu as déjà implicitement le lien vers tous tes fichiers créé.
 
EDIT : maintenant si tu veux pas te casser les pieds avec une base à synchro et tu n'as "que" 100 ou 200 photos légères, un readdir peut être plus facilement exploitable pour toi, à toi de voir comboien de temps tu as pour dév et pour optimiser/maintenir.


Message édité par NewsletTux le 27-09-2011 à 13:05:19

---------------
NewsletTux - outil de mailing list en PHP MySQL
n°2103571
CyberDenix
Posté le 27-09-2011 à 16:27:01  profilanswer
 

Il n'y a aucun intérêt à utiliser une base MySQL pour ce type d'opération, un simple glob() suffira à ramener tous les fichiers nécessaires.
 
Par ailleurs, sur un système Unix, les fichiers accédés sont également mis en RAM. Entre l'analyse de la requête, son optimisation, son exécution... l'accès direct par fichier me semble plus rapide. A tester.


---------------
Directeur Technique (CTO)
n°2103640
NewsletTux
<Insérez ici votre vie />
Posté le 27-09-2011 à 23:14:43  profilanswer
 

Ha, c'est intéressant comme retour ! Mais sur un serveur comme free.fr où la fonction glob est désactivée, il faut forcément passer par le readdir ou la base.
 
Après, comme je le disais plus haut, ça dépend de l'usage, s'il faut pouvoir tagger les photos, les trier, etc., une base sera plus appropriée. Si c'est "juste" pour un affichage des plus simples avec un usage pas très avancé, un readdir suffira.
 
Ce que je voulais dire avec la RAM, c'est que, corrige-moi si je me trombe, mais t'as un dossier avec X milliers de fichiers dedans, le pointeur mémoire n'est que le pointeur du dossier courant, pas les X milliers de fichiers montés en RAM, si ? Auquel cas lorsque tu voudras lire, avec un système de pagination, des milliers de fichiers, tu feras le calcul du total de fichiers, l'opération de calcul du nb de pages, de la page en cours, et la création de la liste des fichiers d'indice page Y à Page Y + nb de lignes. Et là, je pense qu'une requête mysql peut être plus appropriée, mais comme tu dis : à tester !


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°2103643
Pascal le ​nain
Posté le 28-09-2011 à 00:15:54  profilanswer
 

En fait, c'est des pages de présentation de restaurants, et sur chacune il y a un slideshow avec au maximum 3 photos.
Il ya plusieurs milliers de restaurants.
Donc mon arborescence est :
 


photos
     resto_1
          x.jpg
          y.jpg
          z.jpg
     resto_2
          x.jpg
          y.jpg
          z.jpg
     .....
 
     resto_n
          x.jpg
          y.jpg
          z.jpg


 
et moi je lui dis directement readdir(www/var/site/photo/resto_x)
 
J'ignore comment il s'y prends pour chercher le bon dossier quand on lui demande resto_x. La liste des fichiers doit etre triee, et il fait une dichotomie sur le tout. C'est pas si long au final.
 
Du cote mysql, je suis pas sur que l'id des restos soient indexes, puisque celui-ci n'est pas une cle d'indexation, car plusieurs photos pour 1 resto.
 
 :sarcastic:


Message édité par Pascal le nain le 28-09-2011 à 09:42:04
n°2103904
grosbin
OR die;
Posté le 29-09-2011 à 11:32:57  profilanswer
 

Un appel scandir ou un appel shell et tu écris dans un fichier


---------------
Photos Panoramiques Montagnes Haute Savoie

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  optimisation: affichage de photos : readdir ou requete sql ?

 

Sujets relatifs
Optimiser requête lourde (Copying to tmp table ?)Requete qui fonctionne sous Phpmyadmin mais pas avec php
access requeteproblème pour trouver la bonne requête...
probleme de parametre avec requete préparéee dans une méthode MVCrequête sql multi tables
probleme requete sql jointure entre les tablesSortir les résultats d'une requête de sa boucle
[AJAX-JavaScript]Requete Ajax retournant un 403[SQL] Requète SQL complexe
Plus de sujets relatifs à : optimisation: affichage de photos : readdir ou requete sql ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR