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 :

Des includes vraiment trop longs


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut Des includes vraiment trop longs
    Bonjour,

    Je commence un nouveau projet qui va être assez lourd.

    J'ai mis un timer qui me permet de savoir combien de temps il me faut pour effectuer des requetes, ou autres...

    J'ai mis un premier timer entre tous les includes que je fais de mes classes.
    Environ une 20ène.

    Il faut environ 1 sec pour inclure ces classes.
    Je trouve cela hyper long, pourtant aucun traitement n'est fait et les classes ne font pas plus de 200 à 500 lignes en général.

    Ca fait environ 0,05 ms par classes.

    Ca ne vous semble pas un peu long?

  2. #2
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    je précise la chose suivante.

    Je charge une fois ma page, en faisant un include d'un fichier, qui comprends lui tous les includes de tous les autres fichiers.

    Ensuite toute ma navigation se fait en ajax. Il n'y a plus de rechargement de la page.

    Et dans le fichier appelé à chaque fois par ajax, j'ai mon include du fichier comprenant toutes les inclusions.

    Je ne pourrais pas les mettre en cache toutes ce sclasses?


    Seconde question:
    J'utilise le fameux ob_start("ob_gzhandler"); pour qu'il fasse les échos à la fin.
    Dois je remettre cet ob_start? dans le fichier appelé par ajax?

  3. #3
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Peut etre serait t'il interessant de passer par un cache en bytecode non ?
    C'est evidant que si à chaque fois tu recharges l'ensemble de ton application, ça risque de prendre du temps.

    Apres, ça peut etre interessant dans ce genre de cas si tu connais parfaitement tes conventions de passer par un autoload ^^

  4. #4
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    Je viens de mettre en place un autoload, mais je n'ai pasl'impression que ca change beaucoup.

    D'autant plus qu'ayant des classes d'accès à mes données, et les classes étant pas mal liée entre elles, ca doit à mon avis en charger unebonne partie à chaque fois tout de meme.

    j'ai une navigation en ajax. Bizarement, si je ne met pas un include au départ, mon autoload ne semble pas fonctionner.

    a partir du moment ou j'ai fait un include sur le fichier index, et que je navigue en ajx, après ca semble ok.
    Bizarre...

    Aurais tu une doc pour le cache en bytecode?

  5. #5
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2007
    Messages : 89
    Points : 99
    Points
    99
    Par défaut
    Bonjour,

    1s pour charger 20 classes cela me semble anormalement lent.

    Essaye de connaître le temps d'inclusion de chaque fichier, le problème provient peut être d'un seul fichier.

  6. #6
    Membre habitué
    Avatar de savageman86
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 199
    Points
    199
    Par défaut
    Chez moi, un fichier de 1500 lignes prend environ 18 ms pour s'inclure. Si tu as 20 fichiers de 500 lignes, soit 10000 lignes, ça devrait mettre environ 120 ms. Tes fichiers incluent n'en incluent-ils pas d'autres ?

    Sinon je pense que tu as un problème de conception. Tes pages ne devraient pas recharger les 20 classes à chaque fois, mais seulement ce dont elles ont besoin... Te sers-tu *tout le temps* de tes 20 classes ?

  7. #7
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    avec un autoload, je passe à environ 0.2 sec.

    Bizarrement, il faut que je fasse un include des classes, sur le index, qui ne sera pas rechargé par la suite puisque tout le reste se passe en ajax.

    J'ai un seul fichier ajax qui comprends toutes mes fonctions. Je lui passe dans un GET ou POST le nom de l'action et il prends la partie qui l'interesse.

    J'ai besoin d'une bonne partie de mes classes, j'en ai pour creer des formulaires, acceder à mes données et ensuite des classes qui correspondent à chaque ENTITE de ma base.
    Mais vu le projet, je risque d'en avoitr encore pas mal, et du coup, meme si je suis redescendu à 0.2, j'ai peur de revenir sur des temps anormalement long, alors que pour moi tout ce qui est coté PHP devrait être quasi instantané.
    Seules les requetes devraient etre longues.

    Je n'ai rien repéré d'anormales dans mes classes, et non elles prennent toutes à peu pret le meme temps

    EDIT: 0.05sec pour un include en moyenne

  8. #8
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2007
    Messages : 89
    Points : 99
    Points
    99
    Par défaut
    bonjour,

    sinon tu peux essayer de profiler ton application. Pour cela il faut que tu installes l'extension xdebug qui va te générer un fichier de profile (fonctions appelles et temps d'exécution) que tu peux ensuite analyser avec KCacheGrind par exemple.

Discussions similaires

  1. [C#][NPOI] Affichage vraiment trop long
    Par corail01 dans le forum C#
    Réponses: 2
    Dernier message: 14/10/2014, 16h27
  2. [TooltipText] Que faire quand il est (vraiment) trop long
    Par mavina dans le forum Composants
    Réponses: 5
    Dernier message: 31/03/2009, 09h22
  3. Effacer des répertoires dont le path est trop long
    Par thetraveller dans le forum Windows XP
    Réponses: 5
    Dernier message: 21/05/2007, 10h35
  4. Retour à la ligne des textes trop longs.
    Par shadowbob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/12/2006, 23h59
  5. Mkiso, nom des packages trop longs
    Par Jibees dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 12/09/2006, 15h14

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