Блог Горошко Андрея 1C-Битрикс Консольные команды в Битрикс: Создание CLI-скриптов для bitrix.php

Консольные команды в Битрикс: Создание CLI-скриптов для bitrix.php

Средний рейтинг
Еще нет оценок

В современном Битрикс (с версии main 20.100.0) появилась нативная поддержка консольных команд на базе Symfony Console.

Теперь вместо создания разрозненных PHP-файлов для CRON можно писать структурированные команды с аргументами и опциями, запускаемые через единый файл bitrix.php в корне сайта.

Шаг 1: Создание класса команды

Класс команды должен наследоваться от \Bitrix\Main\Cli\Command (или Symfony\Component\Console\Command\Command).

Создадим файл /local/modules/my.module/lib/Cli/TestCommand.php

namespace My\Module\Cli;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;

class TestCommand extends Command
{
    // Настройка команды
    protected function configure()
    {
        $this
            // Имя команды для вызова (например, php bitrix.php my:test)
            ->setName('my:test')
            // Описание
            ->setDescription('Тестовая команда для проверки CLI')
            // Аргумент (обязательный)
            ->addArgument('name', InputArgument::REQUIRED, 'Имя пользователя');
    }

    // Логика выполнения
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $name = $input->getArgument('name');
        
        $output->writeln("Привет, <info>$name</info>! Это CLI Битрикс.");
        
        // Возвращаем статус (0 - успех, 1 - ошибка)
        return Command::SUCCESS;
    }
}

Шаг 2: Регистрация команды в .settings.php

Битрикс должен узнать о вашей команде. Для этого нужно добавить её в конфигурацию модуля.

Файл /local/modules/my.module/.settings.php

return [
    'controllers' => [
        'value' => [
            'defaultNamespace' => '\\My\\Module\\Controller',
        ],
        'readonly' => true,
    ],
    // Секция для консольных команд
    'console' => [
        'value' => [
            'commands' => [
                \My\Module\Cli\TestCommand::class,
            ],
        ],
        'readonly' => true,
    ],
];

Шаг 3: Запуск

Теперь откройте терминал, перейдите в корень сайта (туда, где лежит bitrix.php) и выполните:

php bitrix.php my:test Ivan

Результат: Привет, Ivan! Это CLI Битрикс.

Преимущества CLI:

  • Автоматическая проверка DOCUMENT_ROOT и подключение ядра.
  • Удобная работа с аргументами и флагами (например, —dry-run).
  • Красивый вывод (цвета, прогресс-бары, таблицы).
  • Единая точка входа для всех фоновых скриптов.

CLI bitrix, консольные команды, bitrix.php, symfony console, создание команды битрикс, cron скрипты, cli d7.

Мой рейтинг:

Добавить комментарий

Related Post

Работа с корзиной (Recycle Bin) через API: Удаление и восстановление сущностейРабота с корзиной (Recycle Bin) через API: Удаление и восстановление сущностей

Средний рейтинг Еще нет оценок Модуль «Корзина» (recyclebin) позволяет не удалять данные безвозвратно, а временно сохранять их с возможностью восстановления. Это стандарт для задач, сделок CRM и элементов инфоблоков. 1.

Подключение Пользовательских полей (UF) к своим ORM-сущностямПодключение Пользовательских полей (UF) к своим ORM-сущностям

Средний рейтинг Еще нет оценок Мы привыкли, что пользовательские поля можно добавлять к разделам, пользователям или Highload-блокам. Но что, если вы создали свою таблицу (ORM-сущность) и хотите дать администраторам возможность

Bitrix\Main\Update\Stepper: Обработка больших данных по шагам с прогресс-баромBitrix\Main\Update\Stepper: Обработка больших данных по шагам с прогресс-баром

Средний рейтинг Еще нет оценок Когда нужно обработать 100 000 элементов или импортировать огромный файл, обычный скрипт упадет с ошибкой max_execution_time. Решение — выполнять задачу порциями (по шагам). В Битрикс для