2015-05-22 10 views
11

Per controllare tutte le query da una parte specifica di codice che sto usando:Come controllare tutte le query eseguite da un codice specifico in Magento

  1. Modifica dal protetta al pubblico il $ _debug variabile Varien_Db_Adapter_Pdo_Mysql

  2. fare lo stesso per $ _logAllQueries

  3. Aggiungere questa prima dell'esecuzione del codice:

    $adapter = Mage::getSingleton('core/resource')->getConnection('core_write'); 
    $adapter->_debug = true; 
    $adapter->_logAllQueries = true; 
    
  4. Aggiungere questo dopo il codice

    $adapter->_debug = false; 
    $adapter->_logAllQueries = false; 
    

    modo che il codice finale sarà simile a questo:

    $adapter = Mage::getSingleton('core/resource')->getConnection('core_write'); 
    $adapter->_debug = true; 
    $adapter->_logAllQueries = true; 
    
    Mage::getModel('catalog/product')->load(1); 
    
    $adapter->_debug = false; 
    $adapter->_logAllQueries = false; 
    

C'è qualche altra soluzione più elegante?

+1

http://magento.stackexchange.com/questions/25113/how-to-log-all-magento-sql – Niloct

risposta

0

È possibile aprire semplicemente il file di registro MySQL e monitorare le query registrate durante la richiesta della pagina. Se si utilizza Linux, ad esempio, utilizzare il comando tail -F per visualizzare tutte le modifiche sul file di registro in modo live.

Prova questo per esempio su Debian: tail-F /var/log/mysql.log

1

V'è un'estensione disponibile per Magento che sto personalmente usando da molto tempo (che funziona per Comunità, nonché EE):

http://www.magentocommerce.com/magento-connect/magneto-debug.html

Questo ti consente di - Verifica tutte le richieste - Vedi tutte le query SQL eseguite per una richiesta - Visualizza tutti gli handle di layout eseguiti - e molti altri

+0

Ciao, sto usando magneto-debug, una versione con patch biforcuta, mentre Madalin Oprea fa non accettare richieste di pull da un po. È buono, ma non esattamente per un pezzo di codice specifico. Grazie, R –

1

È possibile utilizzare una variante della mia risposta a How do I print all the queries in Magento?

Invece di attivare il profiler a livello globale in local.xml, aggiungere questi prima e dopo il codice che si desidera verificare:

$profiler = Mage::getSingleton('core/resource')->getConnection('core_write')->getProfiler(); 
$profiler->setEnabled(true); 

// ... 

Mage::log(print_r($profiler->getQueryProfiles(), true), null, 'queries.log', true); 
$profiler->setEnabled(false); 

allora troverete la query in var/log/queries.log

+0

Grazie, @ fschmengler, questo è quello che stavo cercando! Best, R –

Problemi correlati