Временно заблокировать папку от чтения с ASP.NET - PullRequest
0 голосов
/ 29 июня 2009

Я работаю над функцией индексации / поиска на сайте. Индексирование выполняется каждые 6 часов и занимает около 2 минут.

Как лучше всего запретить чтение из папки indexes в течение этих 2 минут?

1 Ответ

2 голосов
/ 29 июня 2009

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

edit: представлены стратегии блокировки ниже

Не зная, как процессы, использующие индекс, используют его, трудно предложить хорошую стратегию блокировки. Если индексы получены, прочитаны и быстро освобождены и , у вас есть эксклюзивный контроль над каталогом индекса, вы можете записать файл блокировки в каталог индекса (что-то вроде indexlock.donotuse) в начале Скопируйте индекс и удалите его, когда закончите. Если ссылки на индексы хранятся в течение длительного времени, подход с блокировочным файлом все еще будет работать, но вам потребуется более сложная координация.

Вы также можете хранить метаданные управления версиями индекса в самом индексе и размещать обновленный индекс рядом со старым. Затем, когда вы приступите к чтению из индекса, проверьте, существует ли более новый, прежде чем использовать тот, который у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...