Как посмотреть историю запросов в Yii2?

В 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(), чтобы получить информацию о выполненных запросах. Затем мы выводим эту информацию в консоли или любом другом месте, как вам удобно.

Теперь, когда вы запустите ваше приложение и выполните запросы к базе данных, информация о них будет записываться в базу данных или отправляться на указанный адрес электронной почты. Вы можете использовать эту информацию для отслеживания производительности вашего приложения и оптимизации запросов к базе данных.