Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-09-2011 15:45:06

siriu
Membre
Date d'inscription: 17-05-2011
Messages: 55

Profiler requetes SQL

Bonjour,

Je n'arrives pas a afficher via firebug et firephp mes requetes SQL

Voici mon application.ini

Code:

;initilisation du report d'erreurs pour le mode production 
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

;definition de la timezone
phpsettings.date.timezone = "Europe/Paris"

;Include path
includePaths.library = APPLICATION_PATH "/../library"

;Bootstrap
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

;initialisation des modules
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
;chargement du plugin Zend_Application_Resource_Modules en ne lui fournissant aucune option ici
resources.modules[] = ""

;Layout
resources.layout.layout = "layout"
resources.layout.layoutPath = APPLICATION_PATH "/modules/default/layouts/scripts"

appnamespace = "Application"
autoloadernamespaces[] = "My_"


;Views
resources.view.encoding = "UTF-8"

;connexion à une base de données
resources.db.adapter = "PDO_MYSQL"
resources.db.params.charset = "UTF8"
resources.db.params.host = "localhost"
resources.db.params.username = "root"
resources.db.params.password = ""
resources.db.params.dbname = "mabasedetest"
resources.db.params.date_format = "YYYY-MM-ddTHH:mm:ss"
resources.db.isDefaultTableAdapter = true

session.use_cookies                                             = on
session.use_only_cookies                                        = on
session.use_trans_sid                                           = off
session.strict                                                  = off
session.remember_me_seconds                                     = 60
session.name                                                    = masession
session.gc_divisor                                              = 10
session.gc_maxlifetime                                          = 60
session.gc_probability                                          = 1
session.save_path                                               = APPLICATION_PATH "/data/session/"
log.file                                                           = APPLICATION_PATH "/data/log/log.log"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
;initilisation du report d'erreurs pour le mode developpement
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1



;base de données test



;le contrôleur frontal renvoie toute exception capturée
resources.frontController.throwexceptions = 1

et mon bootstrap :

Code:

<?php 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

    public function run()
    {
        // Cela permet d'avoir la configuration disponible de partout dans notre application
        Zend_Registry::set('config', new Zend_Config($this->getOptions()));
        parent::run();


        
    } 
    
protected function _initDbProfiler()
{
        $this->bootstrap('db');
        $profiler = new Zend_Db_Profiler_Firebug('All DB Queries');
        $profiler->setEnabled(true);

}
    

    
    
    protected function _initResponse()
    {
        //Cela permet de tout mettre en utf-8
        $response = new Zend_Controller_Response_Http();
        $response->setRawHeader('Content-type: text/html; charset=utf-8');
        Zend_Controller_Front::getInstance()->setResponse($response);
    
    }
    
    protected function _initPlugins()
    {
        $front = Zend_Controller_Front::getInstance();
        $front->registerPlugin(new My_Controller_Plugin_Acl());
    }
    
    
    //initilisation de l'autoloader pour une structure sans module
    protected function _initAutoload()
    {
        $moduleLoader = new Zend_Application_Module_Autoloader ( 
        array ('namespace' => '', 'basePath' => APPLICATION_PATH ) );
        return $moduleLoader;
    }

    protected function _initView()
    {
        // Initialisation de la vue
        $view = new Zend_View;
        $view->doctype('XHTML1_STRICT');
        //$view->headTitle('Mon application avec Zend_Application');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=utf-8');
           $view->headLink()->appendStylesheet('/style/frontend/styles/bootstrap.css');
        $view->headLink()->appendStylesheet('/style/frontend/styles/style.css');

        // Ajoutons le au ViewRenderer
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
        $viewRenderer->setView($view);

        $front = Zend_Controller_Front::getInstance();
        $front->registerPlugin(new My_ModuleLayoutHandler());
        
        $view->addHelperPath('App/View/Helper/', 'App_View_Helper');
        /* Retournons le, il sera stocké dans un registre par le bootstrap pour utilisation future */
        return $view;
    }
    
    
    /**
     * Gestion de log
     */
    protected function _initLog()
    {
        $options = $this->getOptions ();
        $fichier = $options ['log'] ['file'];
        $log = new Zend_Log ( $writer = new Zend_Log_Writer_Stream ( $fichier ) );
        //Ajout des paramètres à enregister
        $log->setEventItem ( 'user_agent', $_SERVER ['HTTP_USER_AGENT'] );
        $log->setEventItem ( 'client_ip', $_SERVER ['REMOTE_ADDR'] );
        $defaultFormat = Zend_Log_Formatter_Simple::DEFAULT_FORMAT;
        $format = '%client_ip%%user_agent%' . $defaultFormat;
        
        //Ajout dans le journal de log
        $writer->setFormatter ( new Zend_Log_Formatter_Simple ( $format ) );
        // n'oublions pas de le retourner
        return $log;
    }
    
    
    /*
    protected  function _initSession()
    {
        $configSession  = $this->getOptions();
        // Configuration de la session (impérativement avant son démarrage)
        Zend_Session::setOptions($configSession['session']);
        // Partage (et création ou restauration) de l'objet de session dans le registre
        // Ce premier appel à new Zend_Session_Namespace démarre la session PHP
        Zend_Registry::set('session', $session = new Zend_Session_Namespace($configSession['session']['name']));
        
        // On initialise la session
        $session = new Zend_Session_Namespace($configSession['session']['name'], true);

        return $session;
    }*/
}

Est ce qu'il me manque quelque chose ?

J'aimerai simplement que s'affiche la requete lorsque je suis sur cette méthode :

Code:

private function getUsersAll() {
  $dbUser = new Default_Model_DbTable_Users();
  return $dbUser->fetchAll()->toArray();
}

Hors ligne

 

#2 04-10-2011 17:33:56

wemalo
Membre
Date d'inscription: 31-07-2011
Messages: 55

Re: Profiler requetes SQL

bonjour,
tout d'abord est ce que tu arrive a faire des requête sur la base de donnée?
c-a-d est ce qu'il y a une connexion entre l'application net la base de donnée.

Hors ligne

 

#3 31-10-2011 10:28:11

webdigit
Membre
Date d'inscription: 23-08-2011
Messages: 10

Re: Profiler requetes SQL

Hello à tous,

j'ai le même souci :

- impossible d'afficher  les requêtes provenant de ceci : (class XXXX_Model_DbTable_Actions extends Zend_Db_Table_Abstract)

Code:

$select = $table->select();
$select    ->setIntegrityCheck(false)
->from($table,array(blablabla))
 ->join(blablabla)
 ->join(blablabla)
 ->order(blablabla);

J'ai mis "blabla" pour ne pas alourdir la lecture...

Cette requête ne pose aucun souci et s’exécute parfaitement... mais rien dans firebug...

Par contre, si je mets au même endroit dans ce fichier ceci

Code:

$db = Zend_Registry::get('db');        
$db->query('SELECT * FROM machin');

et bien là, pas de souci, tout s'affiche dans Firebug. D'ailleurs dans mon appli, toutes les requêtes faites sous la forme de statement sont bien transmises à Firebug... mais pas les requêtes faites depuis un Zend_Db_Table_Abstract (fetchAll, select...).

Ce qui est normal me semble t il, puisque on définit le profiler pour $db ($db = Zend_Db::factory(blabla)) et apparemment pas pour les les extensions de classe de Zend_Db_Table_Abstract...

est ce que je me trompe ?

Si c'est effectivement cela le souci, comment faire pour mettre un profiler Firebug aussi sur toutes les requêtes exécutée via les classes étendues de Zend_Db_Table_Abstract


Merci pour vos éclaircissements...

JC

Hors ligne

 

#4 31-10-2011 10:35:33

webdigit
Membre
Date d'inscription: 23-08-2011
Messages: 10

Re: Profiler requetes SQL

En même temps, ceci fonctionne très bien aussi...

Code:

Zend_Debug::dump($select->__toString());

Mais bon, ça demande d'ajouter du code à chaque fois... le fait de tout avoir dans Firebug c'est tout de même plus schtouple !

JC

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