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 сохранился. При невозможности очистки появится сообщение: удалите задание вручную. Задания, добавленные вручную вне управляемого блока, модуль не удаляет.