Скрипты Cron и CLI
Планировщик псевдо-cron и опциональные скрипты командной строки для продвинутых хостингов.
TubePress выполняет повторяющиеся задачи — пересчёт рейтингов, опрос заданий транскодирования, импорт лент, обновление карт сайта и многое другое — не требуя настройки системного crontab. На этой странице описаны псевдо-cron, сердцебиение, поддерживающее его работу, и необязательные командные скрипты для продвинутых серверов.
Псевдо-cron
CronManager — планировщик в стиле WordPress. Задачи регистрируются с именем и интервалом, а CronManager::run() вызывается один раз в конце каждого рендеринга страницы. Каждая задача выполняется только в том случае, если с момента её последнего запуска прошло достаточно времени.
// Register a task (typically from a plugin's boot() method)
CronManager::register('promo_refresh', 600, function () {
Promo::rebuildCache(); // runs at most every 10 minutes
});Он спроектирован так, чтобы безопасно работать на любом хостинге:
- Атомарная блокировка. Условный
UPDATEв таблицеsettingsзахватывает каждый запуск, поэтому два одновременных запроса никогда не выполнят одну и ту же задачу дважды. - Постоянные метки времени. Времена последнего запуска хранятся в
settings(сautoload = 0), поэтому расписание выдерживает перезапуски и сбои — следующая загрузка страницы просто продолжает с того места, где остановилась. - Автоматический откат. Задача, продолжающая вызывать ошибки, повторяется с экспоненциально возрастающим интервалом (максимум один час) до восстановления, а счётчик ошибок сбрасывается при успехе.
Сердцебиение — crontab не нужен
Псевдо-cron срабатывает только при рендеринге страниц, что является проблемой для нового сайта с низким трафиком. TubePress решает эту задачу с помощью самоуправляемого сердцебиения: лёгкого процесса CLI (bin/heartbeat.php), который пингует главную страницу примерно каждые 50 секунд, чтобы планировщик продолжал работу даже при нулевом количестве посетителей.
- Он защищён PID и автоматически перезапускается при любом веб-запросе, если когда-либо завершится — вам не нужно его запускать или контролировать.
- Отключите его во время работы, установив
heartbeat_enabledв0.
crontab -e, без супервизора, без дополнительных служб для обслуживания.Что выполняется в планировщике
Ядро и встроенные плагины регистрируют свои задачи — например, пересчёт CTR, отправку и повтор заданий транскодирования, импорт лент, обработку каталога, задания AI-перевода и обновление карт сайта. По мере включения подсистем они автоматически добавляют свои задачи — ничего настраивать не нужно.
Необязательные CLI-скрипты
Для тяжёлых или разовых операций несколько командных скриптов поставляются в bin/ и могут запускаться вручную или из реального crontab на подходящих серверах. Они включают долго работающие рабочие процессы (для загрузок каталога и массового удаления) и вспомогательные утилиты обслуживания. Запускайте их с помощью системного PHP CLI из корня проекта:
php bin/heartbeat.php # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobsИспользование реального crontab (продвинутый уровень)
Если вы предпочитаете управлять планировщиком из операционной системы — например, на высоконагруженном сайте, где вам нужно точное и предсказуемое время — вы можете отключить сердцебиение и добавить единственную запись системного cron, которая запрашивает главную страницу (или запускает сердцебиение один раз) с коротким интервалом. Большинству операторов это никогда не нужно; встроенного сердцебиения достаточно.
Следующие шаги
Остались вопросы?
Откройте заявку в панели управления, и наша команда поможет.