Недавно я интегрировал Doctrine 2 ORM в CodeIgniter 2. Я настроил Doctrine 2 как библиотеку и автоматически загрузил ее в CodeIgniter. На странице я создаю экземпляр диспетчера сущностей доктрины следующим образом:
private static $em = null;
public function __construct() {
parent::__construct();
$this->em = $this->doctrine->em;
}
И тогда я начинаю использовать Entity Manager, когда это необходимо. У меня проблема в том, что при каждом запросе страницы Entity Manager инициализируется некоторое время (примерно 1 секунда). Это заставляет пользователя ждать, пока страница загрузится. Ниже вы можете увидеть некоторые результаты производительности, которые я измерил:
BENCHMARKS
Loading Time: Base Classes 0.0166
Doctrine 0.0486
GetArticle 1.0441
Functions 0.0068
Controller Execution Time 1.1770
Total Execution Time 1.1938
Функция GetArticle в основном выполняет вызов EntityManager->find():
$currentart = $this->em->find('Entities\Article', $artid);
Мне приходится ждать эту 1 секунду, даже если я использую метод EntityManager->createQuery().
На каждой странице у меня есть потеря времени примерно на 1 секунду из-за первого запроса EntityManager.
Это распространено?
Эта 1 секунда связана с тем, что EntityManager необходимо установить соединение с БД? Однако функции/запросы после первого запроса выполняются довольно быстро.