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

Langage PHP Discussion :

optimisation lecture de fichiers


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut optimisation lecture de fichiers
    Bonjour,

    Voilà, j'ai sur mon serveur un dossier "IMAGES" contenant plusieurs dossiers avec un nommage de date "YYYY-MM-DD".
    Ces dossiers sont au nombre de 30 (de J-1 à J-30 sur un intervalle glissant), ceux-ci contenant environ 1500 images chacun avec un nommage "YYYY-MM-DD_HH-MI-SS".

    Sur mon site web, je souhaite faire une liste déroulante qui permette de sélectionner une image en particulier par rapport à sa date et son heure : j'ai donc besoin pour cela du nom des fichiers et de leur chemin.
    Seulement, dans un soucis d'optimisation et de performance, je ne veux pas devoir reparcourir tous les fichiers de tous les dossiers à chaque rechargement de page (surtout que pour d'autres raisons, mon site se rafraîchit automatiquement toutes les minutes).

    Je cherche donc à savoir quelle est la meilleur méthode à utiliser pour ce genre de cas

    - Mettre la liste des images dans une variable de session de type tableau associatif $nom_fichier => $chemin_fichier ?
    - Lancer un batch sur mon serveur tous les jours à minuit qui va crée un fichier texte avec nom_fichier - chemin_fichier puis aller lire dedans avec PHP ?

    Merci de m'indiquer la meilleur démarche

  2. #2
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Par défaut
    Hello,
    je ne sais pas si c'est la meilleure méthode, mais devant un besoin équivalent, j'avais plutôt choisit la deuxième que tu sites, avec quelques différences:
    Lancer un batch sur mon serveur tous les jours à minuit qui va crée un fichier texte avec nom_fichier - chemin_fichier puis aller lire dedans avec PHP ?
    Tes images, tu les upload comment ? Avec ton code, dans une partie en Back office de ton site ?
    Moi, c'était mon cas, du coup, au upload d'une nouvelle image, je générais un fichier texte (qui écrasait l'ancien) avec la liste des photos (mais sous forme d'objet sérialisé php). Ensuite, pour en générer la liste, j'allais chercher l'objet dans le fichier texte...

    Maintenant si l'upload de tes images ne passe pas par ton code, il y a toujours le batch mais tu risques d'avoir des images ignorées si elles ont été uploadées après le batch... dans ce cas-là, la sérialisation de l'objet qui a toutes les infos dans une variable session me paraît un moindre mal...

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    Bonjour, d'abord merci de ta réponse.

    En fait non, il n'est pas question d'upload dans mon cas car je développe un intranet et que tous les postes clients ont accès aux images via des dossiers partagés : donc j'ai uniquement besoin de la liste des chemins de tous les fichiers (des sous-répertoires) présents dans mon dossier IMAGES.

    Le problème, c'est que parcourir 1500x30 = 4500 fichiers, c'est pas instantanée ! Donc je ne peux pas laisser gérer ça par mon application sous peine de lourdement retardé l'affichage du site
    Je dis ça car j'ai essayé pour tester en utilisant la méthode suivante de PHP (que j'utilise pour trouver le dernier fichier crée d'un dossier) et pour autant de fichiers, c'est beaucoup trop long (j'atteinds le timeout...).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($chemin_de_IMAGES), RecursiveIteratorIterator::CHILD_FIRST);
    foreach($iterator as $file){
    echo $file->getPathname()."<br>";
    }
    Du coup, j'hésites (à moins qu'ils existe d'autres moyens!) entre :
    - batch planifié tous les jours à minuit qui me liste les chemins des 4500 fichiers dans un fichier texte, puis récupérer cela (avec le petit traitement qui va bien) dans une variable de session type $_SESSION[images][date_image][heure_image]=chemin_image.
    - Installer et utiliser une BDD MySQL

    ???

  4. #4
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Par défaut
    Tu peux concevoir le bacth comme plus régulier (genre toutes les 2h) si la liste des images évolue trop vite...
    Ensuite, la BdD finalement semble la solution la plus simple, car de stocker autant d'infos dans une variable session risque de te poser assez vite des problème de mémoire.... ensuite, au lieu d'avoir ta liste en question (1500 images sur une liste, ça semble difficile à gérer aussi), tu fais une recherche dans la base de donnée en fonction de critère comme le jour et l'heure
    (du coup ton batch te servirait à mettre à jour le BdD régulièrement)...

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2014
    Messages : 99
    Par défaut
    Ok, c'est ce que je commençais à me dire...

    Merci de ton aide!

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 421
    Par défaut
    Slut,

    A mon avis tu pourrais tout faire sans batch ni bdd simplement en optimisant ton système de recherche.

    En effet puisque tu mets les fichiers d'une même date dans un même dossier, le choix de la date permet de cibler un dossier particulier de sorte que la recherche se fait dans un dossier de maximum 1500 fichiers environ. Du coup la réponse serveur sera quasi instantanée, c'est juste l'affichage qui prendra du temps. Et à ce niveau tu peux soit faire un système de pagination, soit proposer une deuxième sélection pour affiner la plage horaire.

    Au passage, sur le principe et pour ce genre de besoin tu auras un maximum de possibilités en utilisant ajax/php.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation Lecture de fichiers
    Par Hesiode dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 15/12/2009, 09h12
  2. Réponses: 4
    Dernier message: 09/06/2007, 18h25
  3. optimiser lecture fichier image
    Par cheho dans le forum C++
    Réponses: 17
    Dernier message: 15/09/2006, 14h14
  4. Optimisation lecture d'un fichier en binaire
    Par User dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/10/2005, 21h08

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