Перейти к содержанию

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


    [Composer](./../get-started/composer)



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

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

```bash prompt="$"
$ 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 — создает компонент с классом и шаблоном. Компонент можно разместить внутри модуля, в общей папке компонентов или локально.

```bash prompt="$" # Создать компонент внутри модуля $ 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.

```bash prompt="$" # Создать контроллер с 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-класс для таблицы базы данных.

bash prompt="$" $ php bitrix.php make:tablet my_post my.module

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

bash prompt="$" $ php bitrix.php make:agent MyAgent -m my.module -n

  • make:entity — генерирует класс сущности бизнес-логики.

bash prompt="$" # Создать сущность с полями $ php bitrix.php make:entity post -m my.module --fields=title,description,author -n

  • make:event — создает класс события системы.

bash prompt="$" $ php bitrix.php make:event PostCreated -m my.module -n

  • make:eventhandler — генерирует класс обработчика события.

bash prompt="$" # Укажите модуль события и модуль обработчика $ php bitrix.php make:eventhandler PostCreated -n

  • make:message — создает класс сообщения для брокера сообщений.

bash prompt="$" $ php bitrix.php make:message PostCreated -m my.module -n

  • make:messagehandler — генерирует класс обработчика сообщений.

bash prompt="$" # Укажите модуль сообщения и модуль обработчика $ php bitrix.php make:messagehandler PostCreated -n

  • make:module — создает структуру нового модуля с базовыми файлами.

bash prompt="$" $ php bitrix.php make:module my.module

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

bash prompt="$" # Создать Request с полями $ php bitrix.php make:request CreatePost -m my.module --fields=title,description -n

  • make:service — создает класс сервиса для бизнес-логики.

bash prompt="$" $ php bitrix.php make:service MyPost -m my.module -n

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

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

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

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

```bash prompt="$"

$ 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-сущности и генерирует аннотации для их полей.

```bash prompt="$"
# Сгенерировать аннотации для всех модулей
$ php bitrix.php orm:annotate

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

# Перегенерировать все аннотации
$ php bitrix.php orm:annotate --clean

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

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

```bash prompt="$"

Запустить обработчик для всех очередей

$ 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/`.

```bash prompt="$"
# Проиндексировать языковые файлы в стандартной папке
$ php bitrix.php translate:index

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

Обновления

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

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

```bash prompt="$" # Обновить все модули $ php bitrix.php update:modules

# Обновить конкретные модули $ php bitrix.php update:modules -m main,iblock,ui ```

  • update:versions — обновляет модули до указанных версий. Требует JSON-файл со списком версий.

bash prompt="$" $ php bitrix.php update:versions ~/bitrix_modules_versions.json

  • update:languages — обновляет языковые файлы.

```bash prompt="$" # Обновить все языковые пакеты $ php bitrix.php update:languages

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

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

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

```bash prompt="$" $ php bitrix.php help [имя-команды]

или альтернативный вариант

$ php bitrix.php [имя-команды] --help

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

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

!!! tip "Совет"


    Подробную информацию о создании команд, их структуре и возможностях смотрите в [официальной документации Symfony](https://symfony.com/doc/current/console.html#creating-a-command).



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

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

```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 * * * 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.