Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-06-2007 10:15:45

ldims24
Membre
Date d'inscription: 20-04-2007
Messages: 14

Lenteur

Bonjour à tous,

j'ai développé une appli architecturée autour du framework Zend. J'ai suivi les 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:

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:

foreach($this->personnels as $personnel){

traiement

}

Et dans mon modèle, je décalre ma table, mon id, etc..

Je ne comprend vraiment pas pourquoi c'est aussi long.

C'est bon, je suis un boulet si je mets la création de mes objets dans la boucle, c'est normal que les performances soient médiocres.
Désolé pour le dérangement.
@ +

Dernière modification par ldims24 (25-06-2007 13:26:13)

Hors ligne

 

#2 26-06-2007 00:55:03

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: Lenteur

Tu peux profiler ton application sinon.
Si tu possèdes Zend Studio, un profileur est intégré.
Sinon il existe des solutions basées sur KcacheGrind et X-Debug.

Hors ligne

 

#3 26-06-2007 10:50:06

soulsauveur
Nouveau membre
Date d'inscription: 09-05-2007
Messages: 9

Re: Lenteur

Tu devrais faire tes requetes au niveau de ton modèle et non de ton contrôlleur. Une fois que tu à fais ta requete dans ton modèle tu récupere les données au niveau de ton contrôlleur pour le traitement.
Il faut aussi indexer ta base de données si il y a beaucoup d'enregistrement dans ta table il serais bon de creer des index sur les champs de ta clause WHERE cela permet d'obtenir un reel gain de temps a l'éxecution de tes requetes.
Sinon utilise wincachegrind pour profiler ton application.

http://sourceforge.net/projects/wincachegrind/

Trés simple à mettre en place et tu pourra savoir ou ce qui va pas.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages