Консольные команды

Консольные команды в Bitrix Framework — это инструменты для выполнения операционных задач через терминал. Они работают как PHP-скрипты и умеют:

  • принимать аргументы и опции,

  • выполнять долгие операции без ограничений веб-сервера,

  • автоматизировать процессы разработки и администрирования,

  • запускаться по расписанию через cron.

С их помощью можно:

  • управлять кешем и индексами,

  • генерировать код компонентов, контроллеров, ORM-классов,

  • выполнять миграции базы данных,

  • обмениваться данными с внешними системами.

Запустить команду

Консольные команды в Bitrix Framework запускаются через файл bitrix.php в папке /bitrix/ вашего проекта.

cd /path/to/document_root/bitrix
        php bitrix.php [команда] [аргументы] [опции]
        

Для работы с консольными командами необходимо настроить Composer.

Подробнее в статье

Как просмотреть список команд

Чтобы увидеть список доступных в системе команд, выполните:

php bitrix.php list
        

В списке отобразятся встроенные команды Bitrix Framework и команды из установленных модулей.

Встроенные команды

Bitrix Framework включает готовые команды для разработки.

Генерация кода

Команды make генерируют код объектов.

Команды make:entity, make:мodule, make:request, make:service, make:event, make:eventandler, make:message, make:messagehandler, make:agent можно использовать с версии main 25.900.0.

  • make:component — создает компонент с классом и шаблоном. Компонент можно разместить внутри модуля, в общей папке компонентов или локально.

    # Создать компонент внутри модуля
            php bitrix.php make:component MyNamespace:MyComponent —module=my.module
            
            # Создать компонент в общей папке /bitrix/components/
            php bitrix.php make:component MyNamespace:MyComponent —no-module
            
            # Создать компонент в папке /local/components/
            php bitrix.php make:component MyNamespace:MyComponent —local -n
            
  • make:controller — генерирует REST-контроллер для API.

    # Создать контроллер с CRUD-действиями
            php bitrix.php make:controller Post -m my.module —actions=crud -n
            
            # Создать контроллер с конкретными действиями
            php bitrix.php make:controller Post -m my.module —actions=list,get -n
            
  • make:tablet — создает ORM-класс для таблицы базы данных.

    php bitrix.php make:tablet my_post my.module
            
  • make:agent — создает класс агента для периодических задач. После генерации выводит PHP-код для регистрации агента.

    php bitrix.php make:agent MyAgent -m my.module -n
            
  • make:entity — генерирует класс сущности бизнес-логики.

    # Создать сущность с полями
            php bitrix.php make:entity post -m my.module —fields=title,description,author -n
            
  • make:event — создает класс события системы.

    php bitrix.php make:event PostCreated -m my.module -n
            
  • make:eventhandler — генерирует класс обработчика события.

    # Укажите модуль события и модуль обработчика
            php bitrix.php make:eventhandler PostCreated -n
            
  • make:message — создает класс сообщения для брокера сообщений.

    php bitrix.php make:message PostCreated -m my.module -n
            
  • make:messagehandler — генерирует класс обработчика сообщений.

    # Укажите модуль сообщения и модуль обработчика
            php bitrix.php make:messagehandler PostCreated -n
            
  • make:module — создает структуру нового модуля с базовыми файлами.

    php bitrix.php make:module my.module
            
  • make:request — генерирует класс Request для валидации параметров запроса.

    # Создать Request с полями
            php bitrix.php make:request CreatePost -m my.module —fields=title,description -n
            
  • make:service — создает класс сервиса для бизнес-логики.

    php bitrix.php make:service MyPost -m my.module -n
            

Команды make работают в интерактивном режиме — запрашивают нужные параметры. Чтобы выполнить команду сразу, используйте опцию -n и укажите обязательные параметры.

Управлять структурой файлов при генерации кода можно с помощью опций:

  • —prefix — добавляет префикс к стандартному пространству имен,

  • —context — помещает класс в подпространство.

# Создает класс в папке lib/V2/Infrastructure/Controller/
        php bitrix.php make:controller MyPost -m my.module —prefix=V2 -n
        
        # Создает класс в папке lib/Infrastructure/Agent/FeatureName/
        php bitrix.php make:agent MyAgent -m my.module —context=FeatureName -n
        

ORM

Команда orm:annotate сканирует ORM-сущности и генерирует аннотации для их полей.

# Сгенерировать аннотации для всех модулей
        php bitrix.php orm:annotate
        
        # Сгенерировать аннотации для конкретных модулей
        php bitrix.php orm:annotate -m main,iblock,crm
        
        # Перегенерировать все аннотации
        php bitrix.php orm:annotate —clean
        

Обмен сообщениями

Команда messenger:consume запускает обработку очереди сообщений.

# Запустить обработчик для всех очередей
        php bitrix.php messenger:consume
        
        # Обработать конкретные очереди
        php bitrix.php messenger:consume first_queue,second_queue
        
        # Установить паузу между проходами в 11 секунд
        php bitrix.php messenger:consume —sleep 11
        
        # Ограничить время работы 10 минутами
        php bitrix.php messenger:consume —time-limit 600
        

Локализация

Команда translate:index индексирует языковые файлы для локализации. По умолчанию сканирует папку /bitrix/modules/.

# Проиндексировать языковые файлы в стандартной папке
        php bitrix.php translate:index
        
        # Проиндексировать файлы по конкретному пути
        php bitrix.php translate:index —path=/local/modules/my.module
        

Обновления

Команды обновления update показывают список изменений и запрашивают подтверждение перед выполнением.

  • update:modules — обновляет модули.

    # Обновить все модули
            php bitrix.php update:modules
            
            # Обновить конкретные модули
            php bitrix.php update:modules -m main,iblock,ui
            
  • update:versions — обновляет модули до указанных версий. Требует JSON-файл со списком версий.

    php bitrix.php update:versions ~/bitrix_modules_versions.json
            
  • update:languages — обновляет языковые файлы.

    # Обновить все языковые пакеты
            php bitrix.php update:languages
            
            # Обновить конкретные языки
            php bitrix.php update:languages -l it,br,tr
            

Как получить справку по команде

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

php bitrix.php help [имя-команды]
        # или альтернативный вариант
        php bitrix.php [имя-команды] —help
        

Создать новую команду

Консольная команда в Bitrix Framework — это PHP-класс, который наследуется от Symfony\Component\Console\Command\Command.

Подробную информацию о создании команд, их структуре и возможностях смотрите в официальной документации Symfony.

Как зарегистрировать команду

После создания класса зарегистрируйте команду в файле .settings.php в корне вашего модуля. Если файла нет, создайте его. Если файл уже существует, дополните его:


        return [
            'console' => [
                'value' => [
                    'commands' => [
                        // Регистрация команды
                        \Partner\Module\Cli\Command\Feature\RebuildCommand::class,
                    ],
                ],
                'readonly' => true,
            ],
        ];
        

После добавления команда появится в выводе php bitrix.php list.

Где разместить файлы команд

Файлы команд рекомендуется хранить в каталоге модуля в папке /lib/command/.

Пример структуры модуля с одним классом команды:

/local/modules/partner.module/
        ├── .settings.php          # Регистрация команд
        ├── install/
        │   └── index.php
        └── lib/
            └── Cli/
                └── Command/
                    └── Feature/
                        └── RebuildCommand.php
        

Имя команды формируется на основе пространства имен. Для примера выше имя будет feature:rebuild.

Настроить запуск по расписанию

Команды можно запускать по расписанию через cron для регулярных задач.

Пример настройки cron:

# Выполнять команду каждый день в 3:00
        0 3 * * * php /path/to/document_root/bitrix/bitrix.php [command] —no-interaction
        
        # Выполнять команду каждое воскресенье в 4:00
        0 4 * * 0 php /path/to/document_root/bitrix/bitrix.php [command] —no-interaction
        

Опция —no-interaction отключает интерактивные запросы.