2011-09-19 3 views

Répondre

1

Il n'y a actuellement pas un moyen de filtrer le profileur basé sur nom de la table, uniquement par type de requête (INSERT, UPDATE, etc.) ou temps écoulé de la requête.

Voici un code que vous pourriez essayer et qui pourrait vous aider à faire ce que vous voulez cependant, notez, je ne l'ai pas testé, mais j'espère qu'il peut vous aider à démarrer. Fondamentalement, il boucle sur chaque requête qui a été profilée et utilise preg_match pour voir si la requête était à votre table, et sinon elle désactive l'information de requête et continue, si elle était alors elle met à jour certaines statistiques. À la fin de la foreach, les requêtes $, devraient être seulement les requêtes à la table que vous voulez profiler.

<?php 
    $tableName = 'my_table'; 

    /** var $profiler Zend_Db_Profiler */ 
    $profiler = $db->getProfiler(); 

    $queries = $profiler->getQueryProfiles(); 

    $totalQueries = 0; 
    $totalTime  = 0; 

    if ($queries !== false) { 
     foreach ($queries as $index => $query) { 
      $queryString = $query->getQuery(); 

      $t = preg_quote($tableName); 

      if (!preg_match("/UPDATE .?$t.? /i", $queryString) || 
       !preg_match("/INSERT INTO .?$t.?/i", $queryString) || 
       !preg_match("/DELETE FROM .?$t.?/i", $queryString) || 
       !preg_match("/REPLACE .*?INTO .?$t.?/i", $queryString) || 
      ) { 
       unset($queries[$index]); 
       continue; 
      } 

      $totalQueries++; 
      $totalTime += $query->getElapsedSecs(); 
     } 
    } 
+0

merci, je vais essayer ceci et co-commander. – geej

+0

S'il vous plaît vérifier ici: http://stackoverflow.com/questions/7502515/php-and-zend-db-profiler – geej