Page 1 sur 1

Lenteur de mon application

Posté : 25 juin 2007, 11:59
par yegortitov
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.
@ +