Перейти к основному содержимому

CLI и переиндексация по cron

Создать задание из админки​

Вкладка Индексация и проверка → Переиндексация по cron позволяет выбрать весь индекс, товары или разделы; запуск ежедневно в выбранное время, каждый час, каждые 15 или 5 минут; при необходимости ограничить длительность запуска.

Нажмите Установить / обновить задание. Кнопки удаления задания и обновления статуса находятся в том же блоке. Действия применяются сразу, независимо от общей кнопки сохранения. Cron использует уже сохранённые каталоги и поля.

Для управления из админки нужны:

  • права администратора Битрикса;
  • запуск PHP сайта от ОС-пользователя bitrix;
  • POSIX, доступная proc_open, исполняемые /usr/bin/php и crontab, права на пользовательский crontab.

Учётная запись администратора сайта и ОС-пользователь PHP — разные вещи. Если веб-PHP работает от другого пользователя, форма покажет причину и команду для ручной настройки. Модуль не использует sudo и не меняет crontab другого пользователя.

Ручная настройка​

Откройте пользовательский crontab -e от пользователя bitrix. Пример ежедневного полного прохода в 03:00:

0 3 * * * /usr/bin/php /home/bitrix/www/bitrix/modules/zorka.search/tools/reindex.php /home/bitrix/www --cron --scope=all --batch=1000

Замените /home/bitrix/www на реальный корень сайта в обоих местах, проверьте путь и версию PHP CLI. Расписание использует часовой пояс сервера. В пользовательском crontab имя пользователя в строку не добавляется. В панели хостинга расписание укажите отдельно, команду — начиная с /usr/bin/php.

Для выполнения по частям каждые 5 минут:

*/5 * * * * /usr/bin/php /home/bitrix/www/bitrix/modules/zorka.search/tools/reindex.php /home/bitrix/www --cron --scope=products --batch=1000 --max-time=240

Незавершённый проход продолжится при следующем запуске. После завершения следующий запуск начнёт новый проход — учитывайте это при выборе частоты. Перед добавлением расписания можно проверить саму команду в консоли пользователя сайта.

Параметры CLI​

/usr/bin/php /home/bitrix/www/bitrix/modules/zorka.search/tools/reindex.php /home/bitrix/www --scope=sections --batch=300
ПараметрЗначение
--scope=all|products|sectionsВсё, товары или разделы; по умолчанию all
--batch=1..1000Объектов в порции; по умолчанию 300
Без --resume и --cronНачать новый проход выбранного типа
--resumeПродолжить незавершённый проход; при его отсутствии — ошибка
--cronПродолжить проход, начать новый после завершения или заново после изменения настроек
--max-time=240Сохранить прогресс и остановиться между порциями примерно через 240 секунд; 0 — без лимита

--cron и --resume вместе не используются. Лимит времени мягкий: текущий объект и завершающая очистка могут выполняться дольше. Ограничения PHP CLI и сервера также должны позволять работу задачи.

Одновременные запуски и журнал​

Для всех типов прохода одного индекса действует общая блокировка CLI. Повторный cron пропускается с событием busy и кодом 0; повторный ручной запуск возвращает 75. Браузер не меняет курсор работающего CLI. Поиск и очередь обновлений могут работать между порциями.

Вывод — JSON-строки с событиями started, resumed, completed, paused, busy, error (ручной запуск также выводит прогресс). Код 0 означает завершение, сохранённую паузу либо пропуск занятого cron; только completed подтверждает завершённый проход. Ошибка возвращает 1. Для журнала используйте доставку cron или закрытый серверный журнал; не направляйте вывод в публичный каталог сайта.

Что меняет модуль​

Форма управляет только своим помеченным блоком в crontab пользователя bitrix, отдельно для каждого корня сайта. Остальные задания и /etc/crontab не меняются. Это отдельное расписание, не замена штатного запуска агентов Битрикса.

При удалении модуля его блок удаляется автоматически, если доступ к crontab сохранился. При невозможности очистки появится сообщение: удалите задание вручную. Задания, добавленные вручную вне управляемого блока, модуль не удаляет.