frost18
@frost18
Программист PHP

Как правильно использовать конструктор запросов Query в Yii2?

Переписал проект с yii1 на yii2, появились тормоза. Самая тяжелая страница раньше грузилась 0.5-0.8 сек. сейчас та же страница 5.8 сек. Используется 1700 запросов в базу, на что уходит 280 ms. Не могу понять на что уходит остальное время. ActiveRecord не использую, пользуюсь исключительно конструктором запросов.

В yii1 обращался к базе следующим образом:
$command = Yii::app()->db->createCommand();
$command->from('user');
$result = $command->queryAll();

На yii2 я тоже самое переписал на:
$query = new Query();
$query->from('user');
$result = $query->all();

У меня подозрения возникли что тормоза могли взяться из-за создания огромного количества экземпляров класса Query, т.к на сайте используется много рекурсивных запросов.
  • Вопрос задан
  • 1028 просмотров
Пригласить эксперта
Ответы на вопрос 2
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
Откройте Debug фреймворка, найдите повторяющиеся запросы. Определите с какого места они производятся. Оптимизируйте работу так, чтобы данные с БД использовались повторно, а не запрашивались каждый раз

dbd91-clip-89kb.png?nocache=1


У меня подозрения возникли...

С подозрениями нужно идти к гадалке. Сделайте отладку, определите что, где и как тормозит и исправьте.
Ответ написан
Комментировать
R0dger
@R0dger
Laravel/Yii/2 AngularJs PHP RESTful API
А почему не сделать модель и уже от нее делать запросы?
User::find()->all();
а уже рекурсию используйте как описано в документации. Ведь не всегда Вам данные нужны по этой рекурсии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы