ASP синхронно записывать и читать в одном файле - PullRequest
1 голос
/ 21 января 2011

Это мой первый опыт работы с ASP (vbscript), поэтому мне нужен ваш совет.

Хорошо, есть требование создать счетчик для отслеживания номера регистранта регистрационной формы.

Я подумал о том, чтобы создать функцию в vbscript (в файле ASP), которая считывает счетчик из файла (count.txt), который находится на сервере, и увеличивает его на единицу.

Это работает, когда я проверяю это. НО будет ли он работать (и самое главное будет ли он работать должным образом), когда будет сделано несколько одновременных регистраций? Мне кажется, что это состояние гонки (если оно не сломает его полностью:))

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

Примечание: базы данных нет .. :(

Большое спасибо заранее!

1 Ответ

0 голосов
/ 21 января 2011

Я не очень знаком с классическим ASP (и с тем, как соответствующее расширение ISAPI обрабатывает запросы), но может работать следующее решение.

Возможно, вы захотите синхронизировать доступ к файлу из нескольких потоков с помощью оператора SyncLock (поскольку все клиенты будут обслуживаться одним и тем же экземпляром приложения, но разными потоками в запущенном процессе). *

Сначала объявите глобальную переменную:

Application.Lock()
Application("SyncFileLock") = New Object()
Application.Unlock()

Далее, используйте переменную, объявленную выше в вашем выражении SyncLock:

SyncLock Application("SyncFileLock")
    ' Open the file, increment the counter, close the file
End SyncLock

Это гарантирует, что несколько потоков не будут записывать в один и тот же файл одновременно.

...