В Yii2 для просмотра истории запросов можно использовать компонент трассировки (profiler). Компонент трассировки позволяет отслеживать выполнение запросов к базе данных, а также измерять время выполнения и память, затраченную на каждый запрос.
Для работы с компонентом трассировки в Yii2 необходимо выполнить следующие шаги:
1. В файле конфигурации приложения (обычно config/web.php
или config/console.php
) найдите секцию components
и добавьте следующий код:
'components' => [ 'db' => [ 'class' => 'yiidbConnection', // настройки подключения к базе данных ], 'log' => [ 'targets' => [ [ 'class' => 'yiilogEmailTarget', 'mailer' => 'mailer', 'levels' => ['error'], 'categories' => ['yiidb*'], ], ], ], 'profiler' => [ 'class' => 'yiibaseProfiler', 'enable' => true, 'targets' => [ [ 'class' => 'yiilogDbTarget', // настройки подключения к базе данных 'levels' => ['info'], 'categories' => ['yiidb*'], ], ], ], ],
В данном примере мы включаем компонент трассировки, настраиваем его на запись информации о выполненных запросах в базу данных и отправку ошибок на почту.
2. В коде вашего приложения добавьте следующий код для получения информации о выполненных запросах:
$profiler = Yii::$app->get('profiler'); if ($profiler instanceof yiibaseProfiler) { $profiler->flush(); $timings = $profiler->getTimings(); foreach ($timings as $timing) { echo 'Query: ' . $timing['info'] . PHP_EOL; echo 'Time: ' . $timing['duration'] . ' sec' . PHP_EOL; echo 'Memory: ' . $timing['memory'] . ' bytes' . PHP_EOL; echo 'Trace: ' . PHP_EOL; echo $timing['trace'] . PHP_EOL; } }
В данном примере мы получаем объект компонента трассировки и вызываем его методы flush()
и getTimings()
, чтобы получить информацию о выполненных запросах. Затем мы выводим эту информацию в консоли или любом другом месте, как вам удобно.
Теперь, когда вы запустите ваше приложение и выполните запросы к базе данных, информация о них будет записываться в базу данных или отправляться на указанный адрес электронной почты. Вы можете использовать эту информацию для отслеживания производительности вашего приложения и оптимизации запросов к базе данных.