Lenteur de mon application

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Lenteur de mon application

Lenteur de mon application

par yegortitov » 25 juin 2007, 11:59

Bonjour à tous,

j'ai développé une appli architecturée autour du framework Zend. J'ai suivi différents tutoriaux avant de me lancer et me suis appuyé sur ceux ci pour développer.
J'ai un gros problème de lenteur. Pour afficher une centaine de ligne, ça peut mettre plus de 30s. Je ne vois pas d'où ça peut venir...

Quelqu'un pourrait m'aider à optimiser tout ça ?

Merci

Pour illustrer mon problème : j'ai une table personnel avec une centaine d'enregistrements. j'ai donc un controller, un modèle et une vue. Dans mon controller, j'ai une action index qui permet d'afficher les utilisateurs :

Code : Tout sélectionner

function indexAction() { if(isset($_SESSION[APP]['user']['ROLE_ID'])){ // si c'est un paramétreur ou technique ou superuser if($_SESSION[APP]['user']['ROLE_ID'] == 4 || $_SESSION[APP]['user']['ROLE_ID'] == 5 || isset($_SESSION[APP]['acces'])){ $view = Zend_Registry::get('view') ; $view->titre = "Liste des utilisateurs de l'application" ; $view->img = "module_web_list.gif" ; $personnel = new Personnel() ; $where = '1=1'; $order = new Zend_Db_Expr('PER_NOM, PER_PRENOM'); $view->personnels = $personnel->fetchAll($where, $order) ; $view->action = 'index' ; $view->actionTemplate = 'personnel/indexPersonnel.tpl.php' ; $this->_response->setBody($view->render('site.tpl.php')) ; }else{ $this->_redirect(ROOT_URL . '/Authentification'); } }else{ $this->_redirect(ROOT_URL . '/Authentification'); } }
Dans ma vue :

Code : Tout sélectionner

<?php foreach($this->personnels as $personnel){ // récupération du libelle du role $role = new Role() ; $att_role = $role->RoleById($this->escape($personnel->ROLE_ID)) ; ?> <tr> <td class ="texte" bgcolor="<?php echo $c ; ?>"> <?php echo $this->escape($personnel->PER_NOM) ;?></td> <td class ="texte" bgcolor="<?php echo $c ; ?>"> <?php echo $this->escape($personnel->PER_PRENOM) ; ?></td> <td class ="texte" bgcolor="<?php echo $c ; ?>"> <?php echo $this->escape($personnel->PER_CODE) ; ?></td> <td class ="texte" bgcolor="<?php echo $c ; ?>"> <?php echo $att_role[0]["ROLE_LIBELLE"] ; ?></td> </tr> <?php } ?>
Et dans mon modèle, je décalre ma table, mon id, etc..

Je ne comprend vraiment pas pourquoi c'est aussi long... Lorsque j'enlève les jointures, ça va plus vite. Mais comment faire pour optimiser tout ça ? Car j'en ai besoin de ces jointures..

Merci


C'est bon, je suis un boulet si je mets $role = new Role() ; dans la boucle, c'est normal que les performances soient médiocres.
Désolé pour le dérangement.
@ +