Профилировщик Doctrine не улавливает запросы

Думаю, здесь я упускаю что-то очевидное. У меня вместе установлены Doctrine и Zend Framework. В файле bootstrap.php у меня есть следующее - на основе документации Doctrine для использования профилировщика:

$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 ";

Ошибок нет, вывод профилировщика в конце только печатает: «Общее время: 0, количество запросов: 0».

Соединение определенно работает, поскольку запросы выполняются - у меня есть SELECT, извлекающий кучу элементов с помощью Doctrine_Query :: create () и метода execute.


person YiSh    schedule 08.05.2009    source источник


Ответы (2)


Есть подходы получше, но это может быть лучшей отправной точкой.

Предполагая, что соединение и профилировщик настраиваются во время начальной загрузки, есть несколько начальных попыток разработать подключаемый модуль ресурсов Doctrine, см. http://www.nabble.com/RFC%3A-ZendX_Doctrine-to23454552.html и http://www.nabble.com/Autoload-models-with-no-namespace-to23387744.html, вы можете сделать что-то подобное в контроллер / действие:

http://pastie.org/475589

А затем что-то вроде этого в сценарии макета или просмотра:

http://pastie.org/475593

person Community    schedule 12.05.2009
comment
Спасибо за ссылки, приятно видеть, что над правильной интеграцией ZF и Doctrine проделывается некоторая работа. - person YiSh; 22.05.2009

Что находится в массиве $ profiler до того, как вы начнете его запускать?

person Community    schedule 09.05.2009
comment
В основном он пуст: Doctrine_Connection_Profiler Object ([listeners: private] = ›Array ([0] =› query [1] = ›prepare [2] =› commit [3] = ›rollback [4] =› connect [5] = ›Beginintransaction [6] =› exec [7] = ›execute) [events: private] =› Array () - person YiSh; 09.05.2009