Il profiler di Doctrine non rileva le query
-
20-08-2019 - |
Domanda
Penso che qui manchi qualcosa di ovvio. Ho Doctrine e Zend Framework impostati insieme. Nel file bootstrap.php ho il seguente - basato sulla documentazione di Doctrine per l'uso del profiler:
$profiler = new Doctrine_Connection_Profiler();
$conn = Doctrine_Manager::connection();
$conn->setListener($profiler);
(...)
$frontController = Zend_Controller_Front::getInstance();
(...)
$query_count = 0;
$time = 0;
echo "<table width='100%' border='1'>";
foreach ( $profiler as $event ) {
if ($event->getName() != 'execute') {
continue;
}
$query_count++;
echo "<tr>";
$time += $event->getElapsedSecs() ;
echo "<td>" . $event->getName() . "</td><td>" . sprintf ( "%f" , $event->getElapsedSecs() ) . "</td>";
echo "<td>" . $event->getQuery() . "</td>" ;
$params = $event->getParams() ;
if ( ! empty ( $params ) ) {
echo "<td>";
echo join(', ', $params);
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
echo "Total time: " . $time . ", query count: $query_count <br>\n ";
Non ci sono errori, l'output del profiler alla fine stampa solo: " Tempo totale: 0, numero di query: 0 " ;.
La connessione funziona sicuramente, man mano che le query vengono eseguite: ho un SELECT che prende un sacco di elementi usando Doctrine_Query :: create () ed è il metodo di esecuzione.
Soluzione
Esistono approcci migliori, ma questo potrebbe essere un punto di partenza migliore.
Supponendo che la connessione e il profiler siano impostati durante il bootstrap, ci sono diversi tentativi iniziali di sviluppare un plug-in di risorse Doctrine, vedere http://www.nabble.com/RFC%3A-ZendX_Doctrine-to23454552.html e http://www.nabble.com/Autoload-models-with-no-namespace-to23387744.html , potresti fare qualcosa di simile questo in un controller / azione:
E poi qualcosa del genere in un layout o in uno script di visualizzazione:
Altri suggerimenti
Cosa c'è nell'array $ profiler prima di iniziare a eseguirlo?