Значительные задержки в среде dev
вызваны перестройкой контейнера.На самом деле это очень хорошее решение от разработчиков Symfony, поскольку оно позволяет вам сосредоточиться на самой разработке и не тратить время на поиски загадочных ошибок, которые на самом деле будут вызваны скрытой несовместимостью между вашим кодом и содержимым контейнера.
Самый простой способ избежать автоматической перестройки контейнера - это переключиться в среду prod
, где Symfony ожидает, что вы позаботитесь о контейнере самостоятельно.Однако в этом случае вы также потеряете множество других удобных инструментов, предоставляемых Symfony, в среду dev
.
Существует также несколько более сложная альтернатива.Взгляните на метод Kernel::initializeContainer()
, он отвечает за инициализацию контейнера.Как вы можете видеть из кода - Symfony проверяет, является ли контейнер свежим.Это делается путем загрузки .meta
файлов, которые находятся в контейнере, и проверки того, все ли перечисленные в них файлы такие же, какими они были во время создания контейнера.Так как этот метод является довольно внутренним - он не открыт для простых изменений, но вы можете скопировать / вставить его в контейнер вашего приложения и изменить в соответствии с вашими потребностями.Конечно, вы должны понимать, что этот подход не может рассматриваться как рекомендуемый способ и вряд ли поддерживается разработчиками Symfony, поэтому вы должны принять возможные последствия, но все же - это возможно реализовать.