Найдите неиспользуемые сервисы Symfony

В проекте, над которым я работаю, сейчас 7710 сервисов. Автомонтирование включено и пути не всегда исключались из автомонтирования, поэтому сейчас у нас много сервисов, которые, я уверен, не используются как сервисы. Большой проблемой здесь является время сборки контейнера.

Есть ли способ найти неиспользуемые услуги?

Симфония 4.3/PHP 7.4

P.S.: Я уже начал с небольшого PHP-скрипта для чтения XML-контейнера. Возможно, кто-то укажет мне правильное направление: https://gist.github.com/dr0bz/0fd18255f5a5c3b6b17ab3e8152be225. Он находит много ложных срабатываний. Хотя это помогло избавиться прямо сейчас от около 400 сервисов.

Имейте в виду, что и Symfony 4.3, и PHP 7.4 ужасно устарели. Может быть, обновление до поддерживаемых версий уже поможет ускорить компиляцию контейнера?

Nico Haase 03.07.2024 15:06

Да, я знаю. Кроме того, LTS сейчас доступен. Конечно, php 8, а также новая версия SF будут вести журнал, но нет возможности его обновить :(

dr0bz 03.07.2024 16:17

Отлаживали ли вы службу контейнера после инициализации всех служб? Возможно, вы сможете узнать, какая служба не требуется, по ее свойствам.

Bademeister 03.07.2024 16:25

Посмотрите мой комментарий к ответу. Я думаю, что это должно сработать.

dr0bz 03.07.2024 17:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, ознакомьтесь с документацией по компиляции контейнеров (здесь для Symfony 4.x): https://symfony.com/doc/4.x/comComponents/dependent_injection/compilation.html

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

Ха! Этот подходит. Теперь я узнал, что существует файл журнала, в котором регистрируются удаленные службы. Пример: Symfony\Component\DependencyInjection\Compiler\RemoveUnusedD‌​efinitionsPass: Removed service "App\SomeClass...."; reason: unused. Я нашел там около 1000 таких записей. Это хорошая отправная точка. Я мог бы проанализировать его и создать список исключений для файла Services.yaml. Это почти 12 процентов всех услуг. Спасибо.

dr0bz 03.07.2024 17:11

Другие вопросы по теме