Вы когда-нибудь забывали сделать бэкап базы данных? Или вручную отправляли письма подписчикам? CRON решает эти проблемы. Это встроенный планировщик задач в Linux. Он запускает скрипты в заданное время. Без вашего участия. Сегодня я покажу, как подружить PHP и CRON. Будет просто и понятно.

Что такое CRON и зачем он нужен

CRON — это демон (фоновый процесс) в Linux. Он читает специальный файл (crontab) и выполняет команды по расписанию. Представьте, что у вас есть робот-помощник. Он приходит в 3 часа ночи, чистит логи, обновляет кэш и уходит. Вы спите, а работа сделана. CRON идеален для:

  • Отправки email-рассылок
  • Очистки временных файлов
  • Обновления данных из API
  • Генерации отчетов
  • Резервного копирования
Правило: Не запускайте через CRON задачи, которые выполняются дольше интервала между запусками. Иначе скрипты начнут накладываться друг на друга. Используйте блокировки (flock).

Как настроить 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 протестируйте скрипт вручную из командной строки. Так вы убедитесь, что он работает без ошибок.

Продвинутые техники: блокировки и логирование

Если скрипт запускается часто, он может конфликтовать с самим собой. Используйте файловую блокировку:

Для логирования используйте системный логгер или пишите в файл. Пример:

Это поможет отлаживать проблемы.

Что в итоге

CRON — мощный инструмент для автоматизации. Он экономит время и нервы. Вы настроили его за 10 минут. Теперь скрипты работают сами. Помните про блокировки, права доступа и тестирование. Начните с малого: поставьте задачу очистки логов. Потом переходите к рассылкам и бэкапам. Автоматизация — это суперсила разработчика.

Студия WNDER