вторник, 27 января 2009 г.

Чудеса случаются!..

Дорабатывал свою программу автоматического получения и обработки почты. Присылаемые данные я сохраняю в соответствующую папку. Причем для того, чтобы узнать - были ли уже получены эти данные, я проверяю наличие соответствующего присланного файла в папке. Проблема была в том, что иногда данные присылают повторно, причем имя файла - тоже самое что уже было. Естественно, что более старые данные - правильнее. Естественно, что алгоритм их отбрасывал, т.к. считал что эти данные он уже сохранил.

Самый простой способ решения проблемы - привязаться к датам файла и письма. Если дата письма больше даты файла, то такое письмо содержит новую версию файла и его необходимо заменить. Казалось бы - ну где тут можно найти проблемы?

А проблема-то очень интересная :) Делаем следующее:

  1. создаем файл с именем А
  2. переименовываем этот файл, например, в Б (некритично, можно и удалить)
  3. создаем файл с именем А

Вопрос - какое будет время создания нового файла А?

Неа, не угадали - временем создания нового файла А будет время создания старого файла А.

Вот такие дела. В итоге пришлось принудительно ставить время создания файла :(

2 комментария:

  1. Похоже что это все кеш файловой системы...После перезагрузки все будет нормально.

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

    ОтветитьУдалить