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');
}
}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
}
?>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.
@ +