2010-10-12 6 views
2

J'ai un site de production CakePHP où j'ai besoin de dépanner une requête SQL lente. Je veux accéder à cette grande table créée par CakePHP avec la requête SQL, l'heure d'exécution, etc., mais je ne peux pas définir le niveau DEBUG sur 3 sur un site de production. J'imagine que c'est un simple mais je n'arrive pas à comprendre comment je peux obtenir cette information pour un script spécifique et faire quelque chose avec, comme l'enregistrer dans un fichier journal.Comment capturer les requêtes SQL s'exécutant dans une page CakePHP?

Répondre

4

This article va vous aider.

Si vous avez accès au fichier de configuration MySQL, vous pouvez enregistrer des requêtes lentes par enabling log-slow-queries setting.

+0

Bon article. Je voulais éviter le journal des requêtes lent, mais bon. – Justin

2

Pour gâteau 1.3 (pas sûr si cela fonctionne en 1.2), un coup d'oeil à /cake/libs/view/elements/sql_dump.ctp et l'adapter à vos besoins:

$sources = ConnectionManager::sourceList(); 

foreach ($sources as $source) { 
    $db =& ConnectionManager::getDataSource($source); 
    if (!$db->isInterfaceSupported('getLog')) { 
     continue; 
    } 

    $log = $db->getLog(); 

    // examine $log... 
} 
+0

Merci, je suis sur 1.2 en ce moment mais finira par bouger. – Justin

0

DebugKit est votre ami. Il devrait y avoir des versions appropriées pour Cake 1.3, 2.x et 3.x. Il a une belle barre d'outils qui affiche toutes vos requêtes SQL et le temps nécessaire pour les exécuter.

https://github.com/cakephp/debug_kit

Questions connexes