Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/06/2008, 18h20   #1
Membre régulier
 
Avatar de hugo69
 
Inscription : avril 2005
Messages : 498
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 498
Points : 91
Points : 91
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?
hugo69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 19h57   #2
Membre régulier
 
Avatar de hugo69
 
Inscription : avril 2005
Messages : 498
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 498
Points : 91
Points : 91
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?
hugo69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 20h40   #3
Membre éprouvé
 
Homme
Inscription : août 2006
Messages : 313
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

Informations forums :
Inscription : août 2006
Messages : 313
Points : 497
Points : 497
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 ^^
Phelim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 12h10   #4
Membre régulier
 
Avatar de hugo69
 
Inscription : avril 2005
Messages : 498
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 498
Points : 91
Points : 91
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?
hugo69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 14h46   #5
Membre régulier
 
Inscription : juin 2007
Messages : 89
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juin 2007
Messages : 89
Points : 95
Points : 95
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.
dewsz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 15h03   #6
Membre actif
 
Avatar de savageman86
 
Inscription : octobre 2006
Messages : 102
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2006
Messages : 102
Points : 180
Points : 180
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 ?
savageman86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 15h13   #7
Membre régulier
 
Avatar de hugo69
 
Inscription : avril 2005
Messages : 498
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 498
Points : 91
Points : 91
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
hugo69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 15h25   #8
Membre régulier
 
Inscription : juin 2007
Messages : 89
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juin 2007
Messages : 89
Points : 95
Points : 95
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.
dewsz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h00.


 
 
 
 
Partenaires

Hébergement Web