объясни cron-job --простыми-словами

Cron-задача
Странное слово пугает людей, так что уберем загадку сразу. "Cron" происходит от chronos, греческого слова для времени. Вот и всё. Cron-задача — это просто задача по времени. Дело, которое ты велел компьютеру запускать по часам, самостоятельно, снова и снова, пока ты не скажешь остановиться.
Представь систему полива. Ты не вытаскиваешь шланг каждое утро в 6:00. Один раз ставишь таймер, и он срабатывает в 6:00, проснулся ты, спишь или лежишь на пляже в Мексике. Газон полит, а ты больше об этом не думаешь. Cron-задача — ровно то же самое, только для софта.
Ты один раз задаешь время. Она срабатывает всегда. Никто не нажимает старт. Тебя нет в комнате. Теперь главный — часы.
Вот часть, после которой становится понятно: cron-задача отвечает на вопрос когда. Ты даешь ей расписание и задачу, а она просто слушается.
- Каждый час, ровно в начале часа.
- Каждый день в 9:00.
- Каждый понедельник в 5:00, пока ты еще спишь.
- Первого числа каждого месяца.
- Каждые 15 минут, весь день, бесконечно.
Это тихий двигатель, который гудит за половиной автоматизации, на которую ты уже полагаешься. Когда начинаешь его видеть, замечаешь повсюду. Ни одному из этих примеров не нужен человек, который смотрит на часы:
- Ночной бэкап. В 2:00 каждую ночь твои данные копируются в безопасное место, пока офис пустой.
- Понедельничный отчет, который каким-то образом уже лежит в почте до первого кофе.
- Проверка цен, которая запускается каждые 15 минут и пингует тебя в ту же секунду, когда конкурент снизил цену.
- Письмо «твоя подписка продлится через 3 дня», которое уходит в нужный день нужному человеку без кнопки «отправить».
Дальше становится интересно, потому что cron-задача стоит рядом с парой идей из прошлых статей, и они складываются в мощную штуку.
Помнишь headless-работу? Без экрана, без кликов, без дашборда. Задача, которая работает в темноте. Теперь прикрути к ней cron-задачу, и ты убрал из цикла последнего человека. Headless значит: никому не надо смотреть, как это работает. Cron значит: никому не надо это запускать. Сложи их, и получишь задачу, которая сама просыпается, делает работу в темноте и снова засыпает. Ты даже не знаешь, что это произошло.
Короткая честная ремарка, потому что у «настроил и забыл» есть подвох. Cron-задача тупо послушная. Она запускается независимо от того, имеет задача все еще смысл или нет. Если задача тихо сломалась в 2:00, она будет радостно запускать сломанную версию в 2:00 каждую ночь, а ты узнаешь только когда дальше что-то станет выглядеть неправильно. Поэтому для всего важного ход такой: пусть она сообщает, когда закончила, или сообщает, когда упала. Бэкап, который прошел, — хорошо. Бэкап, который орет тебе в ту единственную ночь, когда не прошел, — лучше.
Самый чистый способ держать в голове разницу между этим и вебхуком, потому что их часто путают:
- **Вебхук срабатывает, когда что-то происходит.** Пришла продажа — он реагирует. Управляется событием.
- **Cron-задача срабатывает, когда так сказали часы.** Наступило 9:00 — она запускается. Управляется временем.
Один ждет, пока мир его ткнет. Другой смотрит на часы и тыкает себя сам.
Один раз задай время. Пусть работает, пока ты живешь свою жизнь.