Может быть, реальный пример поможет. Несколько лет назад я работал над проектом календаря событий с использованием Zend Framework. В этом календаре пользователь может создать событие и прикрепить к нему 1 или более дат. Естественно, я реализовал это как соединение «многие-к-одному» в моей базе данных, но это означало, что для того, чтобы прикрепить дату, событие должно было существовать первым. Однако я хотел позволить пользователям добавлять даты , когда они создавали событие, а не после , когда они создавали событие. Другими словами, я хотел, чтобы пользователь одновременно редактировал все аспекты события и отправлял их только после нажатия кнопки «Сохранить».
Я решил проблему, вставив новую пустую запись о событии в базу данных, когда пользователь начинает создавать запись о событии. Эта пустая запись заполняется и сохраняется, когда пользователь нажимает «сохранить», или удаляется, когда пользователь нажимает «отменить». Проблема возникла, когда пользователи ушли без нажатия кнопки «Отмена», и пустая запись о событии была оставлена в базе данных. В конце концов, база данных заполнится этими бессмысленными пустыми событиями, и все может стать ужасным.
Я написал функцию под названием «maintenance ()», которая, среди прочего, удаляла все несохраненные записи старше 24 часов. Я установил задание cron, которое запускалось по ночам, и выполнял скрипт php командной строки, который запускал maintenance ().
Другие вещи, для которых вы можете использовать задание cron:
- Отправка пакета писем новым пользователям. (каждые 5 минут?)
- Обновление статистики пользователя (каждый час?)
- Выполнять ресурсоемкие операции, когда серверы не перегружены трафиком (каждую ночь в полночь или раз в неделю в воскресные ночи?)
- Любое другое событие, которое не происходит в ответ на запрос пользователя (то, что Джефф называет «вне диапазона»).