
Cron и worker
ContentFlow содержит две CLI-команды:
worker.phpобрабатывает готовую очередь;cron.phpпроверяет расписание и затем обрабатывает очередь.
Абсолютный путь к cron.php показан в разделе Администрирование → Глобальные настройки → Основные. Путь к PHP CLI зависит от сервера и указывается в задании cron отдельно.
Worker
Обработать очередь до её опустошения:
/usr/bin/php /absolute/path/to/modx/core/components/contentflow/cli/worker.phpОбработать не более одного элемента:
/usr/bin/php /absolute/path/to/modx/core/components/contentflow/cli/worker.php --onceОдним элементом считается уведомление, запуск задачи или повтор Publisher. Сообщение processed 0 work item(s) означает, что доступной работы нет либо ContentFlow выключен.
Cron для рабочего сайта
Рекомендуемая периодичность — раз в минуту:
* * * * * /usr/bin/php /absolute/path/to/modx/core/components/contentflow/cli/cron.phpcron.php выполняет последовательно:
- восстановление просроченных блокировок worker;
- постановку плановых запусков;
- постановку дополнительных запусков после принятия тем;
- обработку очереди worker до её опустошения.
Пакет не изменяет crontab автоматически.
Параметры cron
Только проверить расписание, не выполняя очередь:
php core/components/contentflow/cli/cron.php --schedule-onlyПроверить расписание и обработать не более одного элемента:
php core/components/contentflow/cli/cron.php --onceНесколько worker
Разные задачи могут обрабатываться параллельно. Каждый элемент очереди получает временную блокировку (lease), поэтому два worker не должны штатно выполнять одну и ту же работу.
Не запускайте несколько экземпляров для одной и той же задачи в обход очереди. ContentFlow допускает только один активный обычный запуск на задачу.
Просроченная блокировка
Если процесс был остановлен сервером, следующий cron освобождает работу после истечения её блокировки:
- текстовый запуск завершается безопасной ошибкой и не продолжается с середины;
- повтор Publisher возвращается в доступное состояние;
- уже созданный ресурс MODX сохраняется.
Проверка команды
Запускайте команду от того же системного пользователя, который будет указан в cron:
cd /absolute/path/to/modx
/usr/bin/php core/components/contentflow/cli/cron.php --schedule-onlyЕсли команда работает в SSH, но не в cron, почти всегда отличаются путь к PHP, рабочий каталог, права пользователя или переменные окружения.