Настройка cron для автоматических задач 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка cron для автоматических задач 1С-Битрикс
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    943
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1074

Без корректно настроенного cron в Битрикс перестают работать агенты: не уходят письма, не обновляются цены из 1С, не удаляются просроченные корзины. На Битрикс-проектах типичная проблема — режим агентов «через хиты» (запуск при каждом запросе пользователя). Это создаёт непредсказуемые задержки: тяжёлые задачи (пересчёт цен, отправка рассылок) выполняются только когда есть трафик, а ночью сайт «спит». Мы сталкивались с проектами, где письма об оплате уходили с опозданием до 4 часов, а очередь почтовых сообщений в b_event накапливалась до 5000 писем. На фоне этого снижалась конверсия — клиенты не получали уведомления о статусе заказа. Единственное правильное решение — перевести агенты на системный cron. В этой статье разберём, как настроить cron для продакшена, избежать типовых ошибок и сократить задержки до 1-2 минут.

Режимы запуска агентов: хиты vs cron

Битрикс поддерживает два режима — через хиты и через cron. Переключение: Настройки → Настройки продукта → Агенты.

Режим хитов (по умолчанию): агенты запускаются при обычных запросах к сайту. Минус — задержка выполнения зависит от посещаемости. Ночью, когда нужно запустить индексацию или отправить рассылку, хитов может не быть совсем. В результате агенты накапливаются, и страницы начинают тормозить.

Режим cron: агенты выполняются системным планировщиком независимо от трафика. Это единственный правильный вариант для продакшена: агенты отрабатывают строго по расписанию, без влияния на пользовательский опыт.

Какой режим надёжнее?

Характеристика Режим хитов Режим cron
Зависимость от трафика Полная Нет
Точность выполнения Низкая (до нескольких часов задержки) Высокая (в пределах интервала запуска)
Нагрузка на сервер Пиковая при массовых запусках Равномерная
Риск пропуска агентов Высокий при отсутствии хитов Минимальный
Рекомендация Только для разработки Для продакшена

Режим cron в 10 раз надёжнее режима хитов по точности выполнения агентов. Экономия времени на ручном запуске агентов экономит бюджет на администрирование.

Настройка cron: пошаговая инструкция

  1. Переключите режим агентов в админке на «cron».
  2. Определите пользователя веб-сервера (обычно www-data или bitrix).
  3. Добавьте задачу в crontab этого пользователя:
*/5 * * * * /usr/bin/php -f /var/www/html/bitrix/modules/main/tools/cron_events.php >> /var/log/bitrix_cron.log 2>&1

Интервал запуска — от 1 до 5 минут. Чаще не нужно: у большинства агентов минимальный период — 1 минута, и более частый запуск ничего не даст.

Путь к PHP должен совпадать с тем, который использует веб-сервер. Проверить: which php или php -v. Если на сервере несколько версий PHP — указывайте полный путь, например /usr/bin/php8.1.

  1. Убедитесь, что файл лога создаётся и не пустой: tail -f /var/log/bitrix_cron.log.

Дополнительные задачи cron

Если используется модуль Поиск или Веб-аналитика, добавьте отдельные задачи:

0 3 * * * /usr/bin/php -f /var/www/html/bitrix/modules/search/lib/crawler.php
0 2 * * * /usr/bin/php -f /var/www/html/bitrix/modules/statistic/tools/update_daily_counter.php

Для сайтов на Битрикс: Управление сайтом с модулем sale — отдельно запускайте обработку заказов:

*/10 * * * * /usr/bin/php -f /var/www/html/bitrix/modules/sale/lib/internals/agent.php

Пример типовых задач:

Задача Команда Периодичность
Основные агенты cron_events.php 2–5 минут
Поисковый краулер crawler.php Раз в сутки
Обработка заказов sale/lib/internals/agent.php 10 минут
Отправка почтовых уведомлений Через основной агент 1–2 минуты

Почему cron важен для интернет-магазина?

Интернет-магазины зависят от своевременной обработки заказов, обновления остатков и отправки уведомлений. Если агенты выполняются с задержкой, клиенты не получают письма об оплате, а менеджеры — уведомления о новых заказах. Мы сталкивались с проектом, где из-за хитов письма уходили с опозданием на 4 часа. После настройки cron задержка сократилась до 1–2 минут.

Пример из практики

Интернет-магазин на редакции Малый бизнес, хостинг на виртуальном сервере. Жалоба: письма об оплате уходят с опозданием на 2–4 часа, иногда не уходят совсем. Диагностика: агенты работали в режиме хитов, ночью трафика нет. Почтовая очередь в b_event накапливалась, модуль main не запускался. Решение: переключение на cron с интервалом 2 минуты, добавление задачи обработки почтовой очереди. После — письма уходят в течение 2 минут после события.

Как проверить, работает ли cron?

Проверить, когда последний раз выполнялись агенты: таблица b_agent в БД, поле LAST_EXEC. Если значение не обновляется — cron не работает.

В административном интерфейсе: Настройки → Производительность → Агенты. Видно время последнего запуска и список агентов с их расписанием.

Также используйте официальную документацию Битрикс по настройке агентов для сверки параметров. Подробнее о cron читайте на Wikipedia.

Типичные ошибки при настройке cron
  • Неправильный путь к PHP (особенно на серверах с несколькими версиями).
  • Забыли переключить режим агентов в админке.
  • Не создали файл лога или нет прав на запись.
  • Агенты заблокированы в b_agent (IS_LOCK = Y) после сбоя — нужно очистить вручную.

Что входит в работу по настройке

  • Анализ текущей конфигурации: проверка режима агентов, состава агентов, наличие блокировок.
  • Настройка crontab: добавление задач с правильными путями к PHP, логирование.
  • Тестирование всех агентов: убедимся, что каждый агент выполняется в срок.
  • Оптимизация периодичности: корректировка интервалов под нагрузку.
  • Документация: описание всех добавленных задач, схемы перезапуска.
  • Консультация: ответы на вопросы, обучение работе с cron.

Сроки и стоимость

Настройка cron для типового сервера — 1–2 часа, включая проверку работоспособности всех агентов и настройку логирования. Для сложных проектов с нестандартной архитектурой может потребоваться до 4 часов. Стоимость рассчитывается индивидуально, в зависимости от сложности. Свяжитесь с нами для точной оценки вашего проекта — мы подберём оптимальное решение.

Закажите профессиональную настройку cron для Битрикс с гарантией результата. Получите консультацию — оценим ваш проект, подготовим конфигурацию и проведём тестирование.

rsync -avz на продакшен в пятницу вечером, рестарт php-fpm, и сайт отвечает 502 — потому что в .settings.php остались локальные настройки подключения к БД. Классическая ситуация: деплой «по старинке» превращается в лотерею. Другой пример: обновление модуля через админку ломает кастомный шаблон компонента — правки не зафиксированы в системе контроля версий, и восстановление занимает часы.

Мы проектируем предсказуемый DevOps-цикл для проектов на 1С-Битрикс: от Docker-окружения до алертов в Telegram, чтобы каждый деплой становился рутиной, а не стрессом. Ниже — как именно мы решаем реальные проблемы Битрикс-команд.

Проблемы, которые решаем

Битрикс исторически жил в парадигме «правим файлы по FTP на боевом сервере». Сегодня так работают десятки команд. Результат — двое разработчиков одновременно правят init.php, затирая изменения друг друга. Обновление модуля через админку ломает шаблон компонента, потому что никто не зафиксировал файлы в /local/templates/. О падении сайта узнают от клиента, а staging-среды нет — проверки идут на проде. Стоимость такого подхода — часы восстановления и потеря бизнес-логики. Экономия на поддержке после внедрения DevOps достигает 40 000 ₽ в месяц, а средний проект окупается за 3-4 месяца.

Почему DevOps критичен для Битрикс-проектов?

Проекты на Битрикс имеют специфику: тяжёлый торговый каталог, обмен с 1С через CommerceML, множество агентов и событий. Без CI/CD и мониторинга каждое изменение становится риском. Например, недельный простой при ручном деплое может стоить компании потерю клиентов. Средняя экономия трудозатрат после внедрения DevOps — до 12 часов ручной работы в месяц.

CI/CD: от коммита до продакшена без рук

Git — переводим проект с FTP на Git (GitLab, GitHub, Bitbucket). Структура веток: main (production), staging, develop, feature-ветки. .gitignore под Битрикс — нетривиальная задача:

/bitrix/cache/
/bitrix/managed_cache/
/bitrix/stack_cache/
/upload/
/bitrix/php_interface/dbconn.php
/bitrix/.settings.php
/bitrix/license_key.php

Пропустишь managed_cache/ — репозиторий распухнет на гигабайты. Забудешь исключить license_key.php — ключ утечёт.

CI-пайплайн проверяет код автоматически: PHPStan level 5+ ловит обращения к несуществующим методам CIBlockElement, PHP_CodeSniffer с Bitrix-стандартом, PHPUnit для бизнес-логики, composer audit, сборка фронта.

CD-пайплайн разворачивает без участия человека. Мерж в staging — деплой на staging. Мерж в main — деплой на production (с ручным подтверждением или без). Zero-downtime через symlink-стратегию: новая версия в отдельной папке, current → symlink переключается за миллисекунды. upload/ живёт вне релизных директорий. При ошибке healthcheck после деплоя symlink откатывается. Инструменты: GitLab CI/CD, GitHub Actions, Deployer (PHP). Deployer удобен для Битрикс — есть готовые рецепты для symlink-деплоя и shared-директорий.

Как Docker решает проблему «у меня работает»?

Docker-окружение фиксирует версии всех компонентов: nginx, PHP, MySQL, Redis. Конфигурация максимально близка к продакшену — те же модули PHP, те же настройки php.ini.

Локальная разработкаdocker-compose.yml включает nginx + php-fpm 8.1/8.2 + MySQL 8.0 (или MariaDB 10.6) + Redis + Memcached. Новый разработчик: git clone + docker-compose up -d — через 5 минут пишет код. Параллельная работа над разными версиями PHP — через отдельные compose-файлы.

Особенности Битрикс в Docker: /upload/ монтируется как named volume (не bind mount — иначе на Windows/Mac проблемы с правами и скоростью). Cron-задачи (/bitrix/modules/main/tools/cron_events.php) — через отдельный контейнер с тем же образом или supervisord. Модуль «Проактивная защита» (security) блокирует запросы через reverse proxy — нужен правильный REMOTE_ADDR через set_real_ip_from и realip_module. bitrix/php_interface/dbconn.php и .settings.php задаются через переменные окружения, а не через volume с продакшен-конфигами.

Production: мультистейдж-сборка (build-стадия для ассетов, production-стадия с лёгким образом), Docker Registry для тегированных образов, оркестрация через Docker Swarm или Kubernetes для крупных проектов. Подробнее о контейнеризации — Wikipedia: Docker.

Как правильно настроить nginx и php-fpm для Битрикс?

Разница между «сайт тормозит» и 200 ms TTFB — в конфигурации. nginx: location-блоки под Битрикс обрабатывают urlrewrite.php для ЧПУ. /bitrix/admin/ закрывает доступ по IP через allow/deny. expires 30d для статики — CSS, JS, изображения кэшируются браузером. Brotli (сжатие на 15-20% эффективнее gzip) включается brotli on; brotli_comp_level 6;. Rate limiting на /bitrix/tools/ защищает от брутфорса. HTTP/2 push для критических ресурсов.

php-fpm: pm = dynamic, расчёт pm.max_children по формуле (RAM - RAM_других_сервисов) / avg_memory_per_process. Для Битрикс avg обычно 40-80 MB. OPcache: opcache.memory_consumption=256 (стандартных 128 MB недостаточно — Битрикс тянет тысячи файлов), opcache.max_accelerated_files=20000, opcache.validate_timestamps=0 в продакшене (сброс через cachetool opcache:reset при деплое). php.ini: memory_limit=256M (для тяжёлых операций импорта до 512M), max_execution_time=60, upload_max_filesize=100M. Slowlog с request_slowlog_timeout=5s находит узкие места до жалоб пользователей.

Мониторинг и логирование

Инфраструктура: Prometheus + Grafana: метрики CPU, RAM, диска, сети, состояния сервисов. Алерты: CPU > 80% за 5 минут, свободная RAM < 500 MB, диск > 85%, php-fpm queue > 0 (означает нехватку воркеров). Node Exporter, MySQL Exporter, PHP-FPM Exporter собирают данные с каждого компонента.

Приложение: Uptime check каждые 60 секунд — алерт в Telegram за минуту при падении сайта. Время отклика ключевых URL: /, /catalog/, /personal/order/make/. Sentry для PHP-ошибок — структурированные ошибки с контекстом. Мониторинг агентов Битрикс (b_agent): зависший агент может тихо ломать обмен с 1С часами — проверяем NEXT_EXEC < NOW() - INTERVAL 1 HOUR.

Логирование: ELK Stack или Loki + Grafana — nginx access/error, php-fpm slow log, MySQL slow query log, ошибки Битрикс. Ротация через logrotate — без неё через полгода access.log займёт 50 ГБ.

Staging-среда

Staging идентичен production: те же версии nginx, PHP, MySQL, модули, настройки php.ini. Автоматическое обновление при мерже в staging-ветку. Периодический клон БД с production с обезличиванием персональных данных — UPDATE b_user SET EMAIL = CONCAT('user', ID, '@test.local'), PHONE = '' (требование 152-ФЗ). HTTP Basic Auth или IP-фильтрация. Robots.txt c Disallow: /. Sandbox-режим платёжных шлюзов для тестирования оплаты.

Ansible: инфраструктура как код

Новый сервер? ansible-playbook site.yml -l production — через 15 минут всё настроено идентично текущему. Плейбуки покрывают nginx, php-fpm, MySQL, Redis, certbot, firewall. Роли переиспользуемые: common (users, SSH, NTP), web (nginx + php-fpm), db (MySQL + backup), monitoring (Prometheus + exporters). Идемпотентность — повторный запуск ничего не ломает. Inventory: [production], [staging], [development] для групп серверов. Подробнее — Ansible Documentation.

Резервное копирование

Компонент Частота Хранение Метод
БД MySQL Каждые 6 часов 30 дней mysqldump --single-transaction + gzip
Файлы (upload/) Ежедневно 14 дней rsync инкрементальный
Полный бекап Еженедельно 60 дней tar + gpg шифрование
Конфиги серверов При изменении В Git Ansible playbooks

Географическая распределённость — S3-совместимое хранилище + отдельный сервер в другом ЦОД. Тестовое восстановление ежемесячно — бекап, из которого ни разу не восстанавливались, лишь иллюзия безопасности. Cron с уведомлениями: если бекап не прошёл — алерт сразу.

Что входит в работу

Наш 5-летний опыт (более 50 проектов на Битрикс) позволяет предоставить полный набор результатов для услуги DevOps для 1С-Битрикс:

  • Документация DevOps-процесса (схема деплоя, политика веток, описание инфраструктуры)
  • Настроенные CI/CD пайплайны (GitLab CI / GitHub Actions) с рабочими триггерами
  • Docker-окружение (docker-compose.yml, Dockerfile, конфиги)
  • Ansible-плейбуки для воспроизведения серверов
  • Мониторинг (Grafana дашборды, алерты в Telegram/Slack)
  • Защищённые доступы с ролевой моделью
  • Обучение команды: два занятия по работе с CI/CD, Docker и деплою
  • Поддержка на этапе внедрения (две недели после запуска) — помогаем отлавливать грабли
Пример GitLab CI для Битрикс (фрагмент)
stages:
  - test
  - build
  - deploy

cache:
  paths:
    - vendor/

unit_tests:
  stage: test
  script:
    - composer install --no-progress
    - php vendor/bin/phpunit

deploy_staging:
  stage: deploy
  script:
    - ansible-playbook deploy.yml -l staging
  only:
    - staging

Как проходит внедрение?

Процесс разбит на логические этапы, каждый с измеримым результатом:

  1. Аудит текущего состояния — оценка инфраструктуры, софта, процессов. Занимает 2-3 дня.
  2. Проектирование архитектуры — выбор стека (Docker/K8s/Ansible), согласование политик CI/CD, настройка репозитория.
  3. Настройка окружений — Docker-окружение для локальной разработки, staging-среда, production-серверы.
  4. Реализация CI/CD — написание пайплайнов, тестирование деплоя, интеграция с мониторингом.
  5. Мониторинг и алертинг — установка Prometheus + Grafana, настройка дашбордов и оповещений.
  6. Обучение команды — два занятия по работе с инструментами.

Типичные сроки внедрения

Задача Сроки
Docker-окружение для локальной разработки 2-3 дня
CI/CD пайплайн (GitLab CI / GitHub Actions) 1-2 недели
Staging-среда 3-5 дней
Мониторинг + алертинг (Prometheus + Grafana) 1-2 недели
Централизованное логирование (ELK/Loki) 1-2 недели
Ansible-автоматизация серверов 2-3 недели
Комплексное DevOps-внедрение 4-8 недель

DevOps — не проект с финальной датой, а переход от «закинул по FTP и молюсь» к предсказуемым процессам. Каждый деплой — рутина, каждый инцидент — алерт с контекстом, каждый новый разработчик — docker-compose up вместо трёхдневной настройки окружения. Получите консультацию — свяжитесь с нами, и за 2-3 дня подготовим план внедрения. Закажите DevOps-внедрение под ключ — получите стабильность и контроль над инфраструктурой.