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

Консольные команды в 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:module, make:request, make:service, make:event, make:eventhandler, make:message, make:messagehandler, make:agent можно использовать с версии main 25.900.0.

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

    Имя компонента указывают в формате пространство_имен:имя_компонента, например my:user.card. Часть до двоеточия — пространство имен компонента, а не пространство имен PHP. Если опустить пространство имен, команда использует bitrix.

    # Создать компонент внутри модуля
    php bitrix.php make:component my:user.card —module=my.module
    
    # Создать компонент в папке /local/components/my/
    php bitrix.php make:component my:user.card —no-module —local -n
    

    Для собственных компонентов используйте пространство имен проекта и папку /local/components/. Команда make:component user.card —no-module без пространства имен и опции —local создает компонент в /bitrix/components/bitrix/. Эта папка предназначена для системных компонентов. Не размещайте в ней собственный код — соблюдайте правила кастомизации.

  • make:controller — генерирует класс контроллера, который наследуется от Bitrix\Main\Engine\Controller.

    # Создать контроллер с 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 — создает заготовку модуля в папке /local/modules/<id>/, где <id> — идентификатор модуля, например my.module.

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

    php bitrix.php make:module my.module
    

    Команда запрашивает название, описание и версию модуля в интерактивном режиме. Эти значения можно передать через опции.

    • —name — название модуля. Обязательно при запуске без интерактивных запросов.
    • —description — описание модуля. Можно не указывать.
    • —module-version — версия в формате N.M.Z, например 1.0.0. По умолчанию 1.0.0.

    Чтобы создать заготовку без интерактивных запросов, укажите опции и добавьте -n:

    php bitrix.php make:module my.module —name="Мой модуль" —description="Функционал проекта" —module-version=1.0.0 -n
    

    Пример. Для идентификатора my.module команда создает следующую структуру:

    /local/modules/my.module/
    ├── default_option.php
    ├── install/
    │   ├── index.php
    │   ├── version.php
    │   └── mysql/
    │       ├── install.sql
    │       └── uninstall.sql
    └── lang/
        └── ru/
            └── install/
                └── index.php
    

    Файл install/index.php содержит класс установки модуля, install/version.php — версию и дату ее создания. Файлы install/mysql/install.sql и install/mysql/uninstall.sql — пустые заготовки SQL-скриптов.

    Файл default_option.php содержит заготовку настроек по умолчанию. Файл lang/ru/install/index.php содержит языковую фразу для названия модуля и, если описание задано, фразу для описания.

  • 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/Cli/Command/ внутри модуля.

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

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

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

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

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

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

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

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

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

В cron сначала перейдите в корень сайта, затем запускайте bitrix.php по относительному пути. Это нужно, чтобы консольный скрипт корректно определил DOCUMENT_ROOT.