Задания Cron в DirectAdmin
Cron — это автоматический запуск команд по расписанию. Он нужен для задач CMS, импортов, очистки временных файлов, рассылок, обновления данных, обработки очередей и других фоновых операций.
В DirectAdmin задания Cron обычно находятся в разделе Advanced Features или Advanced Tools → Cron Jobs.
Как работают поля расписания Cron
| Поле | Что означает | Пример |
|---|---|---|
| Minute | 0-59 | */15 — каждые 15 минут |
| Hour | 0-23 | 2 — в 02:00 |
| Day of month | 1-31 | 1 — первого числа месяца |
| Month | 1-12 | * — каждый месяц |
| Day of week | 0-7 | 0 или 7 — воскресенье |
Звездочка * означает “каждое значение”. Будьте внимательны: если во всех полях стоит *, команда будет запускаться каждую минуту.
Частые варианты расписаний
| Расписание | Что означает |
|---|---|
| */15 * * * * | Каждые 15 минут |
| 0 * * * * | Каждый час |
| 0 2 * * * | Каждый день в 02:00 |
| 0 3 * * 1 | Каждый понедельник в 03:00 |
| 0 4 1 * * | Первого числа каждого месяца в 04:00 |
Не запускайте тяжелые скрипты каждую минуту, если не понимаете нагрузку и если в скрипте нет защиты от параллельных запусков.
Как правильно запускать PHP-скрипты
Для PHP-скриптов лучше использовать PHP CLI, а не открытие URL через браузер:
/usr/local/bin/php /home/user/domains/example.com/public_html/cron.php
Если скрипт должен запускаться из папки сайта, используйте cd перед командой:
cd /home/user/domains/example.com/public_html && /usr/local/bin/php cron.php
Замените user, example.com и путь к файлу на реальные данные вашего хостинг-аккаунта.
Логирование Cron
На этапе настройки обязательно пишите вывод Cron в лог. Так проще понять, запускается ли скрипт и какие ошибки он возвращает.
cd /home/user/domains/example.com/public_html && /usr/local/bin/php cron.php >> /home/user/cron.log 2>&1
Для отдельного сайта можно хранить лог вне public_html, например:
/home/user/logs/site-cron.log
Не храните огромные логи бесконечно. Если лог быстро растет, очищайте его или настройте ротацию.
Защита от наложения запусков
Если скрипт выполняется дольше, чем интервал между запусками, несколько копий могут работать одновременно. Это может создать нагрузку или выполнить действие дважды. Простая защита — запуск через lock-файл:
flock -n /home/user/cron.lock /usr/local/bin/php /home/user/domains/example.com/public_html/cron.php >> /home/user/cron.log 2>&1
Если одна копия уже выполняется, следующая не стартует.
Запуск URL через curl
Запуск по URL используйте только если скрипт специально рассчитан на вызов через web:
/usr/bin/curl -fsS https://example.com/cron.php >> /home/user/cron.log 2>&1
Если cron-URL не должен быть публичным, защитите его секретным токеном или ограничьте доступ по IP. Не оставляйте административные cron-скрипты открытыми для всех.
Перед добавлением задания
- Если есть SSH-доступ, сначала проверьте команду вручную.
- Используйте абсолютные пути к PHP, скриптам и логам.
- Начинайте с безопасного интервала, например раз в 15 или 30 минут.
- Включите логирование хотя бы на первые дни.
- Проверьте, что скрипт не отправляет дубли писем и не повторяет платные действия.
