Профилирование Доктрины 2.0 в Codeigniter - PullRequest
4 голосов
/ 22 декабря 2011

Какой хороший способ профилировать запросы doctrine, когда Doctrine 2.0 интегрирован в codeigniter?

Использование обычного профилировщика CI не соответствует выполнению запросов, потому что он использует Doctrine, а не собственную активную запись.

например. когда вы добавляете этот код $ this-> output-> enable_profiler (TRUE); он также должен показывать выполненные запросы.

http://codeigniter.com/user_guide/general/profiling.html

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Вы можете добавить профилировщик в пакет доктрины

namespace Doctrine\DBAL\Logging;

class Profiler implements SQLLogger
{
    public $start = null;

    private $ci;

    public function __construct()
    {
        $this->ci =& get_instance();
    }

    /**
     * {@inheritdoc}
     */
    public function startQuery($sql, array $params = null, array $types = null)
    {
        $this->start = microtime(true);
        $this->ci->db->queries[] = "/* doctrine */ \n".$sql;
    }

    /**
     * {@inheritdoc}
     */
    public function stopQuery()
    {
        $this->ci->db->query_times[] = microtime(true) - $this->start;
    }
}

Затем загрузить профилировщик в качестве регистратора в вашу основную библиотеку доктрин (doctrine.php для меня)

$logger = new \Doctrine\DBAL\Logging\Profiler;
$config->setSQLLogger($logger);

Инормальное профилирование будет работать нормально.

0 голосов
/ 07 мая 2013
...