Skip to content
ContentFlow
ContentFlow
Планирование, подготовка, проверка и публикация материалов в MODX 3.
  1. Компоненты
  2. ContentFlow
  3. Эксплуатация
  4. Cron и worker

Cron и worker

ContentFlow содержит две CLI-команды:

  • worker.php обрабатывает готовую очередь;
  • cron.php проверяет расписание и затем обрабатывает очередь.

Абсолютный путь к cron.php показан в разделе Администрирование → Глобальные настройки → Основные. Путь к PHP CLI зависит от сервера и указывается в задании cron отдельно.

Worker

Обработать очередь до её опустошения:

bash
/usr/bin/php /absolute/path/to/modx/core/components/contentflow/cli/worker.php

Обработать не более одного элемента:

bash
/usr/bin/php /absolute/path/to/modx/core/components/contentflow/cli/worker.php --once

Одним элементом считается уведомление, запуск задачи или повтор Publisher. Сообщение processed 0 work item(s) означает, что доступной работы нет либо ContentFlow выключен.

Cron для рабочего сайта

Рекомендуемая периодичность — раз в минуту:

cron
* * * * * /usr/bin/php /absolute/path/to/modx/core/components/contentflow/cli/cron.php

cron.php выполняет последовательно:

  1. восстановление просроченных блокировок worker;
  2. постановку плановых запусков;
  3. постановку дополнительных запусков после принятия тем;
  4. обработку очереди worker до её опустошения.

Пакет не изменяет crontab автоматически.

Параметры cron

Только проверить расписание, не выполняя очередь:

bash
php core/components/contentflow/cli/cron.php --schedule-only

Проверить расписание и обработать не более одного элемента:

bash
php core/components/contentflow/cli/cron.php --once

Несколько worker

Разные задачи могут обрабатываться параллельно. Каждый элемент очереди получает временную блокировку (lease), поэтому два worker не должны штатно выполнять одну и ту же работу.

Не запускайте несколько экземпляров для одной и той же задачи в обход очереди. ContentFlow допускает только один активный обычный запуск на задачу.

Просроченная блокировка

Если процесс был остановлен сервером, следующий cron освобождает работу после истечения её блокировки:

  • текстовый запуск завершается безопасной ошибкой и не продолжается с середины;
  • повтор Publisher возвращается в доступное состояние;
  • уже созданный ресурс MODX сохраняется.

Проверка команды

Запускайте команду от того же системного пользователя, который будет указан в cron:

bash
cd /absolute/path/to/modx
/usr/bin/php core/components/contentflow/cli/cron.php --schedule-only

Если команда работает в SSH, но не в cron, почти всегда отличаются путь к PHP, рабочий каталог, права пользователя или переменные окружения.