|
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
|
|||
---|---|---|---|
#18+
Просто в лоб Rlock() или есть решение лучше. Как-то раньше пользовался Rlock и че-то убрал, вроде тормозило. Хотя мож сам лох.. давно это было. В общем вопрос как лучше? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 05:55 |
|
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
|
|||
---|---|---|---|
#18+
MaestroEv, Зайди сюда , далее по ссылкам: Использование -> Программирование в Visual FoxPro -> Разработка приложений на Visual FoxPro -> Оптимизация приложений -> Оптимизация доступа к удаленным данным -> Оптимизация приложений, работающих в многопользовательской среде -> Программирование процессов Коллективного Доступа к Данным ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 06:55 |
|
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
|
|||
---|---|---|---|
#18+
Rlock() "тормозит" в соответствии с настройкой: Код: sql 1.
Вариантов масса, но если требуется именно явная блокировка, то я предпочитаю Rlock() ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 07:18 |
|
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
|
|||
---|---|---|---|
#18+
Да не, спасибо. Хелп я помню. Просто у меня есть несколько решений. - непосредственно Rlock() вроде тормозит. - табличка симофоров, в ней ставлю признак, что взял запись из такой-то таблички на редактирование. при ошибках остаются подвисшие "блокировки" - отметки в табличке семафоров. - семафоры файлики с номером таблички и номером записи в имени. Fopen() его при начале редактирования, остальные не могут. Удобен тем что при отваливании не остается подвисших блокировок. Файликов создается очень много - хоть и пустых. - непосредственно в каждой записи иметь поле - "номер изменения". Когда берешь запись - запоминаешь номер, когда сохраняешь меняешь на следующий если он остался таким же. Иначе - кто-то до вас это сделал - можно информировать. Вот и вопрос, а кто как с этим разбирается? Как правильнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 07:26 |
|
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
|
|||
---|---|---|---|
#18+
Ты бы начал с особенностей своей задачи. Если постоянно куча пользователей пытаются править одну и ту же запись - это не нормально. С чем это связано? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 07:34 |
|
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
|
|||
---|---|---|---|
#18+
MaestroEv ограничение к доступу одного документа в пределах одного сервера Что ты под этим понимаешь? Если все работают в терминале, т.е. все реально крутится на одном сервере, то можно именованные мьютексы использовать. Но тут жесткое ограничение, по сетке это работать не будет, т.е. твой софт навсегда будет ограничен терминалом. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 07:38 |
|
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
|
|||
---|---|---|---|
#18+
Просто торговля. Счет клиенту может выписать любой и любой его коректирует - обычно клиент физически не может быть у двух менеджеров, но если счет корпоративного отдела и они готовят его всем отделом, (каждый готовит свой продук), то возможны накладки. "именованные мьютексы" - вот про них че-нить будет интерессно. Можно ж сделать функцию доступа, настраиваемую от типа сети: терминал или нет. НУ пока терминал - для него и сделаем мьютексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 07:43 |
|
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
|
|||
---|---|---|---|
#18+
MaestroEv- семафоры файлики с номером таблички и номером записи в имени. Fopen() его при начале редактирования, остальные не могут. Удобен тем что при отваливании не остается подвисших блокировок. Файликов создается очень много - хоть и пустых. Не быстрее чем rlock() и файловая система может сглючить если часто это будет происходить. MaestroEv- непосредственно в каждой записи иметь поле - "номер изменения". Когда берешь запись - запоминаешь номер, когда сохраняешь меняешь на следующий если он остался таким же. Иначе - кто-то до вас это сделал - можно информировать. Если этот вариант возможен - то никакие блокировки не нужны. Используй оптимистичную буферизацию, а все проверки выполнит фокс. Можно даже доп.поле не заводить, фокс просто сам проверит все поля на изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 07:47 |
|
Кто как делает ограничение к доступу одного документа в пределах одного сервера?
|
|||
---|---|---|---|
#18+
MaestroEv"именованные мьютексы" - вот про них че-нить будет интерессно. Можно ж сделать функцию доступа, настраиваемую от типа сети: терминал или нет. НУ пока терминал - для него и сделаем мьютексы. Mutex - объект ОС для синхронизации работы процессов/потоков. Работает быстро, умирает вместе с процессом приложения его создавшим. Хорошо описано в книжке Джефри Рихтера "Программирование в Windows" Изучай WinAPI функции: CreateMutex() ReleaseMutex() WaitForSingleObject() тут почитай Для того чтобы объект был виде во всех терминальных сессиях он должен иметь префикс "Global\" в имени. И второй момент, на серверах начиная с W2003 может быть запрещен политикой безопасности показ таких объектов между терминальными сессиями. Тут уже с админами договариваться чтоб разрешили. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2012, 08:07 |
|
|
start [/forum/topic.php?fid=41&fpage=49&tid=1583327]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 168ms |
0 / 0 |