Вы когда-нибудь забывали сделать бэкап базы данных? Или вручную отправляли письма подписчикам? CRON решает эти проблемы. Это встроенный планировщик задач в Linux. Он запускает скрипты в заданное время. Без вашего участия. Сегодня я покажу, как подружить PHP и CRON. Будет просто и понятно.
Что такое CRON и зачем он нужен
CRON — это демон (фоновый процесс) в Linux. Он читает специальный файл (crontab) и выполняет команды по расписанию. Представьте, что у вас есть робот-помощник. Он приходит в 3 часа ночи, чистит логи, обновляет кэш и уходит. Вы спите, а работа сделана. CRON идеален для:
- Отправки email-рассылок
- Очистки временных файлов
- Обновления данных из API
- Генерации отчетов
- Резервного копирования
Как настроить CRON на сервере
Для начала нужно получить доступ к серверу через SSH. Затем введите команду:
crontab -eОткроется редактор. Каждая строка — это задача. Формат такой:
* * * * * /usr/bin/php /var/www/html/script.phpЗвёздочки означают: минуты, часы, день месяца, месяц, день недели. Если поставить * везде — задача будет выполняться каждую минуту. Вот примеры:
| Расписание | Описание |
|---|---|
| 0 3 * * * | Каждый день в 3:00 |
| */5 * * * * | Каждые 5 минут |
| 0 0 1 * * | Первого числа каждого месяца в полночь |
| 30 6 * * 1-5 | В 6:30 по будням |
Важно указывать полный путь к PHP. Узнать его можно командой which php. Если не уверены, спросите хостинг-провайдера.
Пишем PHP-скрипт для CRON
Скрипт должен быть автономным. Он не должен требовать ввода данных с клавиатуры. Вот пример простого скрипта для очистки логов:
7 * 24 * 3600) {
unlink($file);
echo "Deleted: $file\n";
}
}
?>Сохраните его как clean_logs.php. Затем добавьте задачу в CRON:
0 4 * * * /usr/bin/php /var/www/html/clean_logs.php >> /dev/null 2>&1Символы > /dev/null 2>&1 прячут вывод. Если хотите видеть ошибки — замените на > /var/log/cron.log 2>&1.
Типичные ошибки и как их избежать
Ошибка 1: Скрипт не выполняется. Проверьте права доступа. Файл должен быть читаем для пользователя, от которого работает CRON. Обычно это www-data или root. Выполните chmod +x script.php.
Ошибка 2: Неправильный путь к PHP. Используйте абсолютные пути. Относительные пути типа php script.php не сработают.
Ошибка 3: Скрипт зависает. Если задача выполняется долго, добавьте тайм-аут или используйте set_time_limit(0).
Продвинутые техники: блокировки и логирование
Если скрипт запускается часто, он может конфликтовать с самим собой. Используйте файловую блокировку:
Для логирования используйте системный логгер или пишите в файл. Пример:
Это поможет отлаживать проблемы.
Что в итоге
CRON — мощный инструмент для автоматизации. Он экономит время и нервы. Вы настроили его за 10 минут. Теперь скрипты работают сами. Помните про блокировки, права доступа и тестирование. Начните с малого: поставьте задачу очистки логов. Потом переходите к рассылкам и бэкапам. Автоматизация — это суперсила разработчика.
Студия WNDER



