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

PHP & Base de données Discussion :

une page un peu lourde


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut une page un peu lourde
    j'ai une page 'formulaire.php' la ou je specifie mes criteres de recherche, je construit ma requete et je fais le submit vers la page 'resultat.php' , cette derniere execute la requete mysql et affiche le resultat.
    mon probleme c que ds certain cas la ou la requete est un peu lourde, quand je clique sur le bouton submit du 'formulaire.php' je reste tjs sur la meme page comme c rien est passé (je peux cliquer sur d'autres liens ds cette page) et apres un certain temps que j'aurai ma page resultat.
    est ce c normale et si c normale comment faire pour enpecher toute action ds la page 'formulaire.php' apres le submit.

  2. #2
    Membre expérimenté
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Par défaut
    Slt Nourami, je pense que le problème vient de ta requete. A mon avis tu devrait revoir ta requête. Peut être y a t il un moyen de la découper.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut
    Tu veux dire que la page formulaire.php renvoie normalement vers resultat.php ? je veux dire que ton code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form action="resultat.php" method="post">
    Si oui je ne comprends pas comment ca se fait que tu restes sur la meme page. Tu n'as pas un probleme au moment ou tu valides dans l'envoi de tes données vers le serveur ? L'envoi serait tres lent et du coup tu resterais coincé sur la meme page. Normalement quand c est la page de resultat qui rame, tu arrives tout de suite dessus mais elle met du temps a s'afficher.
    Sinon, tu n'as pas moyen d'optimiser ta requete (index sur tes tables etc ?).
    Pour ce qui est d'empecher la modification de la page apres clique sur le bouton submit, vu que tu dois gerer l evenement coté utilisateur, je ne vois qu'une solution en javascript. C'est un peu pourri (j'aime pas recourrir au javascript), mais tu detectes le click sur le submit par exemple, et tu disable tes champs ou ton bouton submit.

  4. #4
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    oui exactement mon code est de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="resultat.php" method="post">
    ma requete est bien optimisé et ma table est indexé sur tous les champs de recherche.
    Mon probleme c que ma table contient plus que 2 million de records.
    le probleme n'est pas dans la validation avant l'envoi parce que meme si ma requete est simple avec seul critere de recherche par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ch1,ch2.... where ch1=1
    le probleme arrive si cette requete est lourde

  5. #5
    Expert confirmé 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
    Par défaut
    Citation Envoyé par nourami
    ma requete est bien optimisé et ma table est indexé sur tous les champs de recherche.
    Tu as fait un analyze ?


    Sinon tu peux rendre inactif tout les champs de ton formulaire via javascript.

  6. #6
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    pour une requete comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ch1 .... where ch1=1
    il suffit que la table sera indexé sur ch1.

  7. #7
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    pour etre claire je vous donne un exemple :
    je selectionne deux critere seulement avec des valeures differentes:
    la premiere fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ch1,..... where ch1=10 and ch2=3
    cette requete me retourne 321 records et ma page s'affiche normalement sans aucun probleme.

    la deuxieme (la meme requete avec une autre valeure de ch1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ch1,..... where ch1=5 and ch2=3
    cette requete me retourne 135560 records et ma page ne s'affiche pas normalement

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : Pays-Bas

    Informations forums :
    Inscription : Décembre 2005
    Messages : 186
    Par défaut
    tu as besoin de tes 135560 resultats sur la page resultat ? (je veux dire c est exploitable ?), sinon si tu geres le multipage tu rajoutes une clause limit dans ta requete. Dans ce cas, ta requete sera vite executé quelque soit le nombre de resultats.

    Par contre je ne comprend pas comment ca se fait qu en validant ta page tu restes sur ta page formulaire jusqu'a ce que ta page resultat soit complétement executée. Sur mon serveur, meme si la requete est lourde, lorsqu'on valide le formulaire (dans la meme situation que toi), on arrive instanement sur la page resultat.php mais cette page met un certain temps à s'afficher. Ca dépend peut etre des parametrages du serveur (je ne suis pas balaise sur les parametrages du serveur).

  9. #9
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    Oui il me faut la totalité je n'ai pas le choix

  10. #10
    Expert confirmé 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
    Par défaut
    La requête en elle-meme sous mysql en ligne de commande te prends combien de temps ?

  11. #11
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    elle me preds 25 s

  12. #12
    Expert confirmé 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
    Par défaut
    A tout hasard, 'explain' te dit quoi ?

    Ce que tu peux faire, c'est, si possible, envoyer des données au navigateur avant de lancer ta requête

    Tu peux aussi peut-etre faire ta requête par paquets, à condition que tu ne fasse pas de traitements sur les données que tu extrais, et tu renvoi vers le navigateur, suivi d'un flush avant de commencer le paquet suivant...

    Tu peux aussi peut-etre booster ta machine (disques, cpu, ...)

  13. #13
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    ds ma page resultat pour chaque j'affiche le nom du champ et le nombre de fois ou ce champ egale a 1 , donc je n'ai rien a afficher avant que la requete se termine

  14. #14
    Expert confirmé 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
    Par défaut
    Citation Envoyé par nourami
    [...] donc je n'ai rien a afficher avant que la requete se termine
    Le titre de la page ? Un texte introductif ?

    A tout hasard, 'explain' te dit quoi ?

  15. #15
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    j'ai fait un echo "qlq chose" au debut mais il n'a rien changé

  16. #16
    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
    Par défaut
    Y aurait-il moyen d'avoir la requête en question stp ? Tu peux anonymer les champs si tu préfères, c'est pour voir s'il y a moyen de l'améliorer un brin.

  17. #17
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Je suis assez d'accord avec kirkis...

    Exprimé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ch1,..... where ch1=5 and ch2=3
    Ta requete me fait penser que tu fais un drôle de produit. Après c'est peut être normal mais bon, je me permet d'emettre le doute qd mm.

  18. #18
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    je vais vous expliquer:
    dans ma table j'ai les champs CH1..CHn
    ces champs ont comme valeur 1..m cad 1 ou 2 ou 3 ou ...ou m ou NULL
    donc ma requete a la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from MaTable where CHi=i1 AND CHj in (J1,J2..) ...
    Chi=i1 si je selectionne une seule valeure pour ce champ.
    CHj in (j1,j2,..) si je selectionne plusieurs valeures pour ce champ
    dans la clause where il n y a que les champs selectionnés
    voila des exemples:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM MaTable WHERE  ch1=2 AND ch3=2 AND ch5 IN (1,4,6)
    SELECT * FROM MaTable WHERE  ch1=1 AND ch2=1 AND ch3 IS NOT NULL

  19. #19
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Citation Envoyé par Mr N.
    A tout hasard, 'explain' te dit quoi ? .....
    Au vu de la requete je ne comprends pas le temps d'execution... Donc comme le dit Mr N un explain ne serait pas mal venu.

    As tu un index sur ta table ? De combien d'enregistrement ta table est composée ?

  20. #20
    Membre chevronné Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Par défaut
    j'ai bien dit au debut que ma table est indexée sur tous les champs cad un index par champs et la taille de ma table est de 2 millions de records

Discussions similaires

  1. Récupérer une page Internet "lourde"
    Par Richard_Rahl dans le forum Langage
    Réponses: 7
    Dernier message: 28/04/2007, 22h24
  2. Une mise page un peu particulière
    Par krapoulos2006 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 20/12/2006, 15h45
  3. Réponses: 1
    Dernier message: 15/08/2006, 01h39
  4. [FLASH 8] Insérer une vidéo swf un peu lourde
    Par php_de_travers dans le forum Flash
    Réponses: 10
    Dernier message: 24/06/2006, 01h39
  5. [XHTML] Une mise en page un peu complexe
    Par psychoBob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 27/05/2006, 18h09

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