Falseclock
@Falseclock
решаю нестандартные задачи

Какой способ подхода к хранению периодичностей лучше использовать?

Есть некая сущность. Допустим это фрукты/овощи/зелень.
Имеем для примера:
  • яблоки
  • клубника
  • помидоры
  • петрушка


Нам надо описать периодичность сбора урожая в период. Одна сущность может иметь 1 урожай в период, а другая 3 урожая.
Плюс нам надо описать в какое время вызревает урожай, например только по четным числам или же каждый первый понедельник месяца.

Во.. расписание поездов в зависимости от сезона. Пока писал - нашел пример получше )) С поездами - самое то.
Вот как бы правильней описать структуру хранения данных по периодике, времени и сезонности, учитывая что может быть ежедневное, только в рабочие дни, либо по четным, в общем по всякому. Хочу гибкости структуры, но что-то вот завис и не могу придумать.
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
@deliro
Вдохновись crontab'ом :)

У него есть особенности, но можешь придумать свои правила:

  • Все условия (времени запуска) проверяются по «логическому И», кроме условий «день недели» и «день месяца» — указанные совместно, они обрабатываются по «логическому ИЛИ», то есть «по любому из дней», что отражено в документации (Ubuntu, Debian, FreeBSD). Однако, такая логика неочевидна и не позволяет создать условие типа «первый понедельник каждого месяца» или «каждую пятницу в 13 число». Разработчики не изменяют данное поведение, считая его стандартом.

  • Синтаксис crontab, используемый для запуска раз в несколько минут со сдвигом, может привести к неожиданным результатам. Так, запись 1-56/5 * * * * не будет совершать запуск по 01-й минуте каждого часа; для срабатывания «каждые 5 минут начиная с 1-й минуты часа» следует использовать формат 1-59/5 * * * * или 1,6,11,16,21,26,31,36,41,46,51,56 * * * *.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можно определить набор из отдельных периодичностей, каждая из которых:
  • единица периода (год, месяц, неделя и т.д.)
  • колич-во отсчётов в промежуток времени (частота)
  • начало промежутка времени
  • конец промежутка времени
  • modulo - целая часть от деления (допустим, 3 - то есть выполнять каждый 3-й отсчёт)

Каждая периодичность может выполняться независимо от другой, параллельно в том же промежутке времени и последовательно или даже с пересечением с другими промежутками времени.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы