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 :

Include très long


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut Include très long
    Bonjour,

    Je poste ce message car j'ai actuellement un problème assez étrange... Sur mon site web j'ai placé un include qui est permet de charger une liste de news préalablement mise en cache. Seulement j'ai un problème, mon site possède une forte affluence et je suis plutôt soucieux de l'optimisation (surtout en ce qui concerne la page principale), seulement voilà... Cet include prend à lui TOUT SEUL 1/10 de seconde (sur bi xeon à 3.2GHz), ce qui est énorme (actuellement près la moitié du temps de génération total de la page). Cependant j'ai remarqué que quand je réduisais la taille de la liste de news (en Kio) à partir d'un certain seuil (8 news au lieu de 15 normalement par exemple) je retrouve d'un coup un temps d'inclusion infinitésimal.. Et donc un temps normal... Je ne comprends pas. Pourriez vous m'éclairer... Je pense actuellement à diviser le cache des news en deux fichiers, ça pourrait résoudre mon problème mais c'est tout de même pas très propre et pas très logique... D'ailleurs je n'avais pas ce problème lorsque j'étais sous php 4... (Actuellement php 5.2.6 et apache 1.3.41). Mais je ne sais pas si c'est lié...

    Merci d'avance.

  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
    Je ne comprend pas bien ... c'est la fonction include() qui est lente ou ce qui est traité dans l'include ?

    Pour l'effet de seuil, tu as peut etre une donnée qui est mal formaté.
    (Je me souviens d'avoir eu un script qui etait etrangement long entre le 8 et le 9 enregistrement ... tout simplement parce que le 8eme enregistrement avait une date vide qui etait donc interpreté comme 1970 et je me retrouvais a faire un traitement de données depuis 1970.)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Je ne comprend pas bien ... c'est la fonction include() qui est lente ou ce qui est traité dans l'include ?
    Uniquement l'include car rien n'est à traiter dans l'include, il s'agit de code html, il est donc directement envoyé sur la sortie. Comme je disais il s'agit de news de je met en cache pour éviter des requêtes inutiles (on utilise un autre serveur distant spécialement dédié à MySQL, les temps d'accès sont donc beaucoup plus longs) et pour éviter une nouvelle analyse syntaxique des news (qui sont rédigées en code phpBB par les newsmaker). Je stocke donc directement le code html dans ce fichier cache. Ce que j'inclus c'est ce fichier.

    PS exemple (un morceau du fichier) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
             <li class="news_item">
                <img class="news_cat" src="http://forum.ffdream.com/images/news/ff13.gif" alt="Final Fantasy XIII" />
                <img class="news_puce" src="design/flch.gif" alt="&gt;" />
                <h3><a href="/news-2889.html">La campagne publicitaire, c'est partie !</a></h3>
                <p>C'est logiquement par le Japon que ladite campagne a commencé. En effet, une affiche de Final Fantasy XIII a été...</p>
             </li>
    Du code html quoi....

    Au cas où vous auriez des doutes, voici comment je calcule le temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $time['fin'] = microTime ();
    include($file_cache);
    ShowTime($time['fin'], "include");
    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
     
    // Fonction qui calcule la différence entre 2 temps
    function DiffTime($microtime1, $microtime2) {
      // On sépare les secondes et les millisecondes
      list($micro1, $sec1) = explode(' ', $microtime1);
      list($micro2, $sec2) = explode(' ', $microtime2);
     
      // On renvoit la différence
      return $sec2 - $sec1 + $micro2 - $micro1;
    }
     
    // Fonction qui affiche le temps écoulé depuis un temps donné
    function ShowTime($start, $legende) {
      $time = DiffTime($start, microTime ());
      echo "\n", '<!-- ', $legende, ' généré(e)(s) en ', $time, ' seconde(s). -->', "\n";
    }

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Et si tu utilisais un tampon de sortie ? Je me demande en effet si ce ne sont pas les flush réguliers du tampon d'affichage qui peuvent te ralentir.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut
    J'ai essayé de mettre la page complète dans un tampon de sortie et effectivement je suis passé d'un temps de génération de 0.22 seconde à 0.01 seconde ! Merci ! Cependant, j'aimerai savoir une dernière chose, est-ce une bonne chose de mettre une page complète dans un tampon de sortie ?

  6. #6
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Tout dépend de la taille de la page et de la mémoire disponible sur le serveur, puisque le buffer est pris directement dans le pool de RAM alloué à php.
    Mais une page html, aussi longue soit-elle, ne doit pas bouffer tant que ça, à priori.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 9
    Par défaut
    C'est bien ce que je pensais, merci !

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

Discussions similaires

  1. Texte très long dans une cellule
    Par rpapa dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 5
    Dernier message: 01/02/2019, 16h45
  2. Demarage des programmes très long
    Par venegan dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 02/03/2006, 16h50
  3. Démarrage de windows vraiment très long
    Par krfa1 dans le forum Windows XP
    Réponses: 16
    Dernier message: 23/10/2005, 12h37
  4. delete très long
    Par slefevre01 dans le forum Oracle
    Réponses: 7
    Dernier message: 06/10/2005, 13h16
  5. Très long texte dans Quick Report - Comment faire ?
    Par delphi+ dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/08/2005, 22h18

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