Любой разработчик сталкивается с задачами, которые требуют автоматического и регулярного выполнения. Среди типичных примеров:
-
Пакетное обновление остатков и цен из файлов поставщиков.
-
Массовый импорт товарных позиций из внешних систем (1С, CRM, маркетплейсы).
-
Фоновая обработка данных и пересчет по сложным формулам.
-
Автоматическая категоризация товаров и простановка бейджей.
Обычно для этого пишется скрипт, но его нужно не просто запустить, а поручить это системе. И здесь на помощь приходит планировщик заданий cron. Если на виртуальном хостинге задачи добавляются через панель управления, то в среде BitrixVM есть свой элегантный способ.
Классический способ и его альтернатива
Конечно, вы можете отредактировать системный crontab вручную, используя консольные редакторы vim или nano. Однако существует более структурированный и менее подверженный ошибкам метод, который идеально вписывается в концепцию BitrixVM.
Пошаговая инструкция: Настройка планировщика
Вместо прямого редактирования системного файла, BitrixVM предлагает использовать централизованный конфигурационный файл.
-
Найдите или создайте файл конфигурации.
Перейдите в папку вашего сайта по пути/bitrix/crontab/. Если в ней отсутствует файлcrontab.cfg— создайте его. -
Добавьте ваши задачи.
Внесите все необходимые cron-задачи в этот файл, соблюдая стандартный синтаксис. Каждая строка — это отдельное задание. -
Примените конфигурацию.
После сохранения файла откройте терминал и выполните команду, указав полный путь к вашему файлу:crontab /home/bitrix/ext_www/your_site_name/bitrix/crontab/crontab.cfg -u bitrix
Важное примечание: Ключ
-u bitrixобязателен, если вы работаете из-под пользователяroot. Он гарантирует, что задачи будут добавлены от имени пользователяbitrix, что критически важно для корректной работы с правами доступа. -
Проверка.
Убедиться, что задачи успешно добавлены, можно с помощью команды просмотра списка:crontab -l -u bitrix
Ключевые особенности и ограничения метода
-
Одно ядро — один файл. Данный способ идеален для серверов с одной установкой Битрикс. Если у вас запущено несколько независимых сайтов (несколько ядер), у каждого будет свой
crontab.cfg. Применение файла одного сайта перезапишет задачи другого. Для мультисайтовой среды рекомендуется использовать прямое редактирование системного crontab. -
Права пользователя. Все задачи должны выполняться от пользователя
bitrix. Команда с ключом-u bitrixрешает эту проблему. -
Централизация конфигурации. Этот метод перезаписывает весь crontab пользователя
bitrixсодержимым файлаcrontab.cfg. Если у вас ранее были задачи, добавленные вручную, их необходимо перенести в этот файл, иначе они будут утеряны.
Технический нюанс: DOCUMENT_ROOT
В среде cron переменная $_SERVER["DOCUMENT_ROOT"] не определена. Если ваш скрипт использует её (а так обычно делают скрипты для Битрикс), её необходимо задать явно в самом коде.
Пример корректного подключения ядра для скрипта, запускаемого из cron:
<?php
define("NO_AGENT_CHECK", true);
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
// Явно прописываем путь к корневой директории сайта
$_SERVER["DOCUMENT_ROOT"] = "/home/bitrix/ext_www/your_site_name";
// Подключаем пролог
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
// ... Ваш код ...
// Эпилог можно не подключать, если после вашего кода не идет вывод HTML.
?>
Этот подход позволяет удобно и безопасно управлять периодическими задачами, храня их конфигурацию в файле проекта, а не в глубинах системных настроек сервера.
