powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кто как делает ограничение к доступу одного документа в пределах одного сервера?
9 сообщений из 9, страница 1 из 1
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
    #38040811
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто в лоб Rlock() или есть решение лучше. Как-то раньше пользовался Rlock и че-то убрал, вроде тормозило. Хотя мож сам лох.. давно это было.
В общем вопрос как лучше?
...
Рейтинг: 0 / 0
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
    #38040826
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaestroEv,

Зайди сюда , далее по ссылкам:
Использование -> Программирование в Visual FoxPro -> Разработка приложений на Visual FoxPro ->
Оптимизация приложений -> Оптимизация доступа к удаленным данным ->
Оптимизация приложений, работающих в многопользовательской среде ->
Программирование процессов Коллективного Доступа к Данным
Должно помочь.
...
Рейтинг: 0 / 0
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
    #38040831
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rlock() "тормозит" в соответствии с настройкой:
Код: sql
1.
set Reprocess To



Вариантов масса, но если требуется именно явная блокировка, то я предпочитаю Rlock()
...
Рейтинг: 0 / 0
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
    #38040836
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не, спасибо. Хелп я помню. Просто у меня есть несколько решений.

- непосредственно Rlock()
вроде тормозит.
- табличка симофоров, в ней ставлю признак, что взял запись из такой-то таблички на редактирование.
при ошибках остаются подвисшие "блокировки" - отметки в табличке семафоров.
- семафоры файлики с номером таблички и номером записи в имени. Fopen() его при начале редактирования, остальные не могут. Удобен тем что при отваливании не остается подвисших блокировок. Файликов создается очень много - хоть и пустых.
- непосредственно в каждой записи иметь поле - "номер изменения". Когда берешь запись - запоминаешь номер, когда сохраняешь меняешь на следующий если он остался таким же. Иначе - кто-то до вас это сделал - можно информировать.

Вот и вопрос, а кто как с этим разбирается? Как правильнее?
...
Рейтинг: 0 / 0
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
    #38040842
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты бы начал с особенностей своей задачи. Если постоянно куча пользователей пытаются править одну и ту же запись - это не нормально. С чем это связано?
...
Рейтинг: 0 / 0
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
    #38040844
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaestroEv ограничение к доступу одного документа в пределах одного сервера
Что ты под этим понимаешь? Если все работают в терминале, т.е. все реально крутится на одном сервере, то можно именованные мьютексы использовать. Но тут жесткое ограничение, по сетке это работать не будет, т.е. твой софт навсегда будет ограничен терминалом.
...
Рейтинг: 0 / 0
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
    #38040846
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто торговля. Счет клиенту может выписать любой и любой его коректирует - обычно клиент физически не может быть у двух менеджеров, но если счет корпоративного отдела и они готовят его всем отделом, (каждый готовит свой продук), то возможны накладки.

"именованные мьютексы" - вот про них че-нить будет интерессно. Можно ж сделать функцию доступа, настраиваемую от типа сети: терминал или нет. НУ пока терминал - для него и сделаем мьютексы.
...
Рейтинг: 0 / 0
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
    #38040847
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaestroEv- семафоры файлики с номером таблички и номером записи в имени. Fopen() его при начале редактирования, остальные не могут. Удобен тем что при отваливании не остается подвисших блокировок. Файликов создается очень много - хоть и пустых.
Не быстрее чем rlock() и файловая система может сглючить если часто это будет происходить.

MaestroEv- непосредственно в каждой записи иметь поле - "номер изменения". Когда берешь запись - запоминаешь номер, когда сохраняешь меняешь на следующий если он остался таким же. Иначе - кто-то до вас это сделал - можно информировать.
Если этот вариант возможен - то никакие блокировки не нужны. Используй оптимистичную буферизацию, а все проверки выполнит фокс. Можно даже доп.поле не заводить, фокс просто сам проверит все поля на изменения.
...
Рейтинг: 0 / 0
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
    #38040854
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaestroEv"именованные мьютексы" - вот про них че-нить будет интерессно. Можно ж сделать функцию доступа, настраиваемую от типа сети: терминал или нет. НУ пока терминал - для него и сделаем мьютексы.
Mutex - объект ОС для синхронизации работы процессов/потоков. Работает быстро, умирает вместе с процессом приложения его создавшим.
Хорошо описано в книжке Джефри Рихтера "Программирование в Windows"
Изучай WinAPI функции:
CreateMutex()
ReleaseMutex()
WaitForSingleObject()
тут почитай

Для того чтобы объект был виде во всех терминальных сессиях он должен иметь префикс "Global\" в имени.
И второй момент, на серверах начиная с W2003 может быть запрещен политикой безопасности показ таких объектов между терминальными сессиями. Тут уже с админами договариваться чтоб разрешили.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Кто как делает ограничение к доступу одного документа в пределах одного сервера?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]