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 :

Exécution unique de requêtes


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 113
    Points : 82
    Points
    82
    Par défaut Exécution unique de requêtes
    Bonjour za tous ...
    Est il possible à votre avis de n'executer qu'une fois la requête qui génère le contenu d'une page php.
    Je m'explique ; je lance une page NEXT.php qui execute une requête pour afficher les résulats.
    Cette requête est longue et ne nécessite pas le rechargement systématique.
    Par exemple si je consulte les données du 1er janvier au 31 Mars, et que l'utilisateur décide d'affichr les données du 2 Février au 12 Mars, il est clairement inutile de relancer toute la procédure.
    Dois je gérer ça dans ma Procédure Stockée, ou puis-je le faire en php ?
    Plus généralement puis je décider de n'exécuter qu'une fois la requête et de garder les données ?
    J'ai découvert récemment ob_start(), qui permet de stocker le flux de données dans une chaine pour l'afficher à volonté. Qu'en pensez vous ?

  2. #2
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Points : 225
    Points
    225
    Par défaut
    Bonjour,

    En gros, tu voudrais conserver les données que la personne demande dans un coin, pour les réafficher sans avoir à refaire de requête ?
    Parce que si tu sauvegarde avec ob_start / ob_get_content, tu va sauvegarder le contenu HTML, et donc le modifier sera pas facile.
    Si tu sauvegarde les données, tu va gagner le temps de ta requête, mais tu risque d'avoir quelques soucis autres, comme toutes les fonctions de cache.
    Donc ce que tu peux faire, si tu as des traitements lourds au niveau de la DB, tu sauvegarde le résultat de ta requête dans un fichier, puis tu le recharge si le fichier est suffisament récent pour qu'on considère qu'il n'y a pas de modifications faites. Si le résultat est dépendant de l'utilisateur, tu peux aussi les mettre dans la session, sinon un fichier sur le serveur qui te sert de cache ( file_put_contents et serialize, puis file_get_content / unserialize, au fautes d'écriture des nom de fonction près ).
    Si les traitements sont lourds au niveau de php, tu peux effectivement faire ob_start, puis sauvegarder avec ob_get_content / file_put_content, mais la si la personne veux les résultats à partir du 2 au lieu du 1er, il faut que tu modifie le code HTML ( et ça, c'est vraiment lourd à faire )

    Bref, bonne chance, et bonne journée.
    LoveAngel :: Meow( );
    Personne ne remarque ce qui marche trop bien. Procrastination, Terry Pratchett

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mars 2009
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 113
    Points : 82
    Points
    82
    Par défaut Merci
    Un grand merci à toi déjà pour cette réponse rapide, ce qui donne en compressé une "répide".

    tu sauvegarde le résultat de ta requête dans un fichier
    C'est interessant, et à vrai dire, j'avais écarté cette éventualité pour des raison euuuh ... inconnues ...

    Mais c'est interessant parce que ça pourrait êtrre un truc récurrent. Tous les jours à 8h, on lance la requête qui génère une page HTML. Du coup cette page HTML est figée, mais ...
    Je viens de voir avec l'utilisateur, et ce qu'il aime bien faire (le fourbe), c'est relancer les traitements pour une date différente. Genre il fait pour le 30 Mars puis pour le 28, puis pour le 29 etc ... comme tu dis, pas moyen donc d'utiliser les ob_kekchose parce que les données doivent être recalculées ... D'autant que l'utilisateur (le félon) souhaite avoir les données en temps réel, donc recalcul obligatoire.
    Je crois malheureusement que je n'ai plus qu'à jouer sur l'optimisation des requêtes utilisées ...
    Je vois pas KOMMENKEUCHPEUFEEER autrement...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 60
    Points : 58
    Points
    58
    Par défaut
    Si ta table n'est pas modifiée entre deux requêtes, tu peux te servir du cache de MySQL. Normalement il est activé par défaut. Ca signifie que le résultat de tes requêtes est gardé en mémoire, d'où un gain énorme de rapidité.

Discussions similaires

  1. [MySQL] update qui ne s'exécute uniquement la deuxième fois !
    Par isa150183 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/01/2006, 09h58
  2. Réponses: 1
    Dernier message: 05/12/2005, 23h24
  3. Réponses: 5
    Dernier message: 23/06/2005, 14h52
  4. Arrêt de l'exécution d'une requête MySQL dans DELPHI.
    Par joelmarc dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/10/2004, 16h11
  5. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 17h48

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