В современном Битрикс (с версии 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.