IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Profiler mes requêtes SQL


Sujet :

Zend Framework PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut Profiler mes requêtes SQL
    Soit mon modèle suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    class Application_Model_Tdocument extends Zend_Db_Table_Abstract {
     
    	protected $_name = 'document';
    	protected $_primary = 'id';
     
        public function init () {
     
    		$profileur = $this->getAdapter()->getProfiler();
    		$profileur->setEnabled(true);
     
    		$this->profiler = $profileur;
     
        	$this->config_vars = Zend_Registry::get('config_vars');
     
        }
     
    	public function getDocument ($pRefDoc, $pUserID) {
     
    		try {
     
    			$query = "
    			SELECT id, ref
    			FROM document
    			WHERE companyId = 1";
     
    			$return = $this->getAdapter()->fetchAll($query, null, Zend_Db::FETCH_OBJ);
     
    			var_dump(__METHOD__.': '.round($this->profiler->getLastQueryProfile()->getElapsedSecs()*1000, 4).' ms');
     
    			return $return;
     
    		} catch (Zend_Db_Exception $e) {
     
    		    Zend_Controller_Action_HelperBroker::getStaticHelper('Log')->queryLog($e->getMessage(), $query, __FILE__, __LINE__, __METHOD__, $_SERVER["REMOTE_ADDR"]);
     
    		}
     
    	}
     
    }
    qui me retourne

    string(51) "Application_Model_Tdocument::getDocument: 0.0799 ms"
    lorsque je l'utilise.

    Ce qui me permet ensuite de logguer mes méthodes/temps d'exécution dans un fichier afin de suivre le temps d'exécution de chacune de mes méthodes.

    J'aimerai savoir si c'est possible d'obtenir le même résultat sans avoir à toucher à ma mèthode, afin qu'elle soit la plus simple possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public function getDocument ($pRefDoc, $pUserID) {
     
    		try {
     
    			$query = "
    			SELECT id, ref
    			FROM document
    			WHERE companyId = 1";
     
    			return $this->getAdapter()->fetchAll($query, null, Zend_Db::FETCH_OBJ);
     
    		} catch (Zend_Db_Exception $e) {
     
    		    Zend_Controller_Action_HelperBroker::getStaticHelper('Log')->queryLog($e->getMessage(), $query, __FILE__, __LINE__, __METHOD__, $_SERVER["REMOTE_ADDR"]);
     
    		}
     
    	}
    J'ai cherché du coté de postDispatch() mais ça semble être réservé pour les contrôleurs. De plus, il faut que je puisse identifier ma methode via __METHOD__

    Des idées ?

  2. #2
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    Salut,

    Je n'ai pas bien saisie ce que tu comptais faire mais sache que si tu modifie chaque fonction pour activer le profiler, il y a un moyen plus simple.
    Si tu utilises un plugin de ressource DB pour la configuration de ta connexion, tu peux déclarer ton profiler dans ta config INI.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    resources.db.params.profiler.class = "Zend_Db_Profiler_Firebug"
    resources.db.params.profiler.enabled= 1

Discussions similaires

  1. Changement de profil des requêtes SQL
    Par ldiaz dans le forum Oracle
    Réponses: 2
    Dernier message: 22/09/2014, 17h22
  2. Mes requêtes SQL sont-elles correctes ?
    Par romca dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/08/2008, 17h23
  3. Mes requêtes SQL sont trop lentes
    Par Pgs dans le forum Langage SQL
    Réponses: 11
    Dernier message: 23/06/2008, 07h48
  4. "Blinder" mes requêtes SQL
    Par Tread dans le forum JDBC
    Réponses: 2
    Dernier message: 14/05/2008, 15h49
  5. [SQL] Optimisation de mes requêtes SQL
    Par webAbsolu dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/10/2007, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo