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 :

Temps de chargement des pages PHP


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Par défaut Temps de chargement des pages PHP
    Bonjour,

    J'ai identifié un gros problème sur mon appli .... Le temps de chargement des pages est d'environ 20sec. !!!!
    Le problème est dû au chargement du menu qui s'affiche via une fonction récursive! Si j'enleve cette fonction, le chargement des pages passe de 20sec. à 1,4sec.!!

    Qqun saurait-il optimiser cette fonction pour que le temps de chargement diminue!?

    PS: J'ai essayé de jouer avec le buffer via ob_start() ob_flush() ob_end_flush() mais ça ne marche pas!

    Voici le code de ma fonction récursive:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    <?php
     
     
    function treeView($parent, $niveau, $array1) {
        include 'Vue/include/bootstrap_iconColor_visitor.php';
        include 'Vue/function/uppercase.php';
     
        $html = "";
        $niveau_precedent = 0;
        $metier = "";
        $uri = "";
     
     
        // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
     
        if (!$niveau && !$niveau_precedent) $html .= "<ul class='dropdown-menu jqueryFadeIn'>";
        foreach ($array1 as $noeud) {
            $id = substr($noeud['idMenu'], 4);
            $libelle = utf8_decode(htmlspecialchars_decode($noeud['libelle']));
            $idRubrique = $noeud['idRubrique'];
            $cmplt = $noeud['complement'];
     
            if ($parent == $noeud['idParent']) {
                if ($niveau_precedent < $niveau) $html .= "<ul class='dropdown-menu jqueryFadeIn'>";
                $html .= "<li class='dropdown-submenu'>"                
                            . "<a data-toggle='dropdown' tabindex='-1' href='#'>";
     
    if ($noeud['typeMP'] == "P") {
        $html .=    "<a href='$uri' class='link'>"
                        . " " . "<span class='$iconPage'></span><span class='$colorPage'>"
                        . " " . ucfirst(preg_replace(array_keys($arrayMarque), array_values($arrayMarque), strtolower($libelle)))
                        /*. " " . $niveau
                        . "-" . $parent
                        . "-" . $noeud['idMenu']
                        . "-" . $noeud['idParent']
                        . "-" . count($noeud['idParent'])
                        . " - " . $noeud['typePage']*/
                        . " " . "</span><span class='$icon2' id='caret'></span>"
                    . "</a>";
    } elseif ($noeud['typeMP'] == "M") {
        $html .=    "<a href='#' class='link'>"
                        . "<span class='$icon1'></span>"
                        . " " . ucfirst(preg_replace(array_keys($arrayMarque), array_values($arrayMarque), strtolower($libelle)))
                        /*. " " . $niveau
                        . "-" . $parent
                        . "-" . $noeud['idMenu']
                        . "-" . $noeud['idParent']
                        . "-" . count($noeud['idParent'])*/
                        . " " . "<span class='$icon2' id='caret'></span>"
                    . "</a>";
    }
     
                $html .= "</a>";
     
                $niveau_precedent = $niveau;
                $html .= treeView($noeud['idMenu'], ($niveau + 1), $array1);
            }
     
        }
     
     
     
        if (($niveau_precedent == $niveau) && ($niveau_precedent != 0)) $html .= "</ul></li><li class='divider'></li>";
        else if ($niveau_precedent == $niveau) $html .= "</ul>";
        else $html .= "</li><li class='divider'></li>";
     
        return $html;
    }
    Merci de votre aide,

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    A 20s de traitement on n'a plus un problème d'optimisation mais une defaillance dans le code.
    D'ailleurs je ne vois pas trop ce que tu aurais voulu faire avec les fonctions de buffering qui gèrent seulement la façon dont on fait l'envoi vers la sortie.

    Il faudrait que tu suives le deroulement de ton algorithme mais avec 20s il doit boucler en rond quelque part.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Par défaut
    En fait ma fonction boucle pour afficher le menu et les pages, c'est une fonction récursive.
    Je n'ai pas l'impression qu'elle boucle pour rien.

    Mais je ne sais pas trop comment optimiser cette fonction!!??

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    En 20s tu pourrais lire des milliers d'éléments en PHP.
    Je ne pense pas que ton menu contienne des milliers d'éléments donc on n'est pas dans un problème d'optimisation mais bien dans un truc mal conçu.

    Comme je t'ai dit, pour debuguer, il faut suivre un peu ce qui se passe dans ton algo.
    Basiquement pour commencer regarde combien d'itération ont lieu, éventuellement le temps de chaque itération, ca donnera des pistes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Par défaut
    Ok je vais plancher sur le déroulement de mon algo!

    J'ai peut etre un début de piste ...
    Dans la partie visiteur j'utilise cet algo avec 1 seule requete (j'ai fais un UNION pour le menu et les pages) sous forme de menu déroulant.
    Dans la partie admin j'utilise un autre algo avec 2 requetes (car j'utilise 2 fonctions) sous forme de treeview.
    La premiere est la meme fonction que la partie visiteur mais ne me renvoie que le menu (requete juste sur la table 'menu').
    La deuxieme est une autre fonction qui ne me renvoie que les pages associées au bon menu (requete sur la table 'page').

    Conclusion:
    La partie admin semble s'afficher plus vite. Je n'ai pas encore mesuré le temps de chargement mais il semblerait que la page s'affiche au bout de 2sec.

    Penses-tu que ca peut venir du fait de mes requetes?

Discussions similaires

  1. [Core] Temps de chargement des pages long
    Par leara500 dans le forum Hibernate
    Réponses: 12
    Dernier message: 06/09/2012, 14h20
  2. Réponses: 6
    Dernier message: 22/09/2010, 15h10
  3. Réponses: 2
    Dernier message: 16/04/2010, 15h29
  4. calculez le temps de chargement des pages
    Par unix27 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/03/2009, 09h49

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