Symfony4: отключение служб, которые вы редко используете - PullRequest
0 голосов
/ 12 июля 2020

Кажется, что все symfony службы всегда __ созданы , даже если вы их не используете. Это верно?

Если у вас есть службы в symfony, которые вы редко используете, например, служба импорта, которую вы используете только один раз, разве это не влияет на нагрузку при каждом вызове? Есть ли стандартный способ отключить их, когда они больше не нужны?

1 Ответ

2 голосов
/ 13 июля 2020

Обычно, когда служба не используется (в том смысле, что ее нужно внедрить в службу или что-то в этом роде), ее конструктор не вызывается:

Когда вы запрашиваете службу MessageGenerator , контейнер создает новый объект MessageGenerator и возвращает его (см. боковую панель ниже). Но если вы никогда не запрашиваете услугу, она никогда не создается. : экономия памяти и скорости. В качестве бонуса служба MessageGenerator создается только один раз: один и тот же экземпляр возвращается каждый раз, когда вы ее запрашиваете.

источник: https://symfony.com/doc/4.4/service_container.html

Еще ленивее можно управлять сервисами через прокси. Это когда вместо фактического возврата службы вы возвращаете оболочку, которая вызывает только конструктор обернутой службы, если и когда для нее вызывается какой-либо метод. Однако для этого требуется дополнительная настройка, см. https://symfony.com/doc/4.4/service_container/lazy_services.html

Итак, по сути: вам не нужно отключать службы, поскольку они не создаются, если у вас нет активного кода, который этого требует. . Если у вас много тяжелых сервисов, которые где-то используются, вам может потребоваться отложенная загрузка, если сервисы внедрены, но все еще не используются.

...