Логика для обработки оставшихся дней при перезагрузке

Есть таймер, который вызывает функцию каждые 24 часа. Эта функция читает файл, чтобы узнать количество оставшихся дней, уменьшает его на 1 и записывает новые оставшиеся дни в тот же файл.

Проблема: если система перезагружается, таймер (который ожидает срабатывания на отметке 24 часа) может не активироваться, и запись в файл не произойдет. Например, если перезагрузка происходит каждый день до 24-часового периода, оставшиеся дни никогда не будут уменьшаться.

Я использую программу C ++ в системе Linux.

Какая логика требуется для решения этой проблемы.

0

Решение

ИМХО, лучшим способом было бы сохранить дату последнего появления другого события и сравнить каждое из них с вашей ежедневной функцией. Или же сохраните непосредственно новую дату (старая дата + X дней), а также протестируйте ее напрямую. Таким образом, вы будете невосприимчивы к перезагрузкам, если вы проверяете их также во время загрузки.

В качестве альтернативы, если вам необходимо продолжить обработку оставшегося количества дней, вы можете проверить время последнего изменения файла. Хорошей подсказкой для количества дней для удаления будет значение (last_time — current_time + 12 часов) / 24 часа. Следует принять несколько дней без активации и даже несколько активаций за несколько часов. Но вы должны быть очень осторожны при ручных действиях с этим файлом, включая, например, восстановление после серьезного инцидента, и убедиться, что содержимое файла соответствует времени его изменения. ДРАКОНЫ ЛОЖЬ ТАМ …

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]