|
|
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
Добрый день. Не подскажите, каким образом осуществляется блокировка записей. Например 2 компа на них запущено приложение, файлы таблиц находятся на файл сервере. На первом компе происходит блокировка записи в таблице. Однак если посмотреть, то реально в файл таблицы ничего не пишется. Откуда тогда приложение на втором компе знает о блокировке записи и при попытке блокировки начинает ждать пока запись разблокируется. И еще вопросик, если кто сталкивался или понимает из-за чего такое может быть: Есть сетевая прога, таблицы на ф.серваке. В какой-то момент пользователь добавляет новую запись через форму, сохраняет. Однако реально в таблицу ничего не сохраняется, а оказывается новая запись с пустыми полями (точнее с черточками ||||). Это происходит случайным образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 09:40 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
авторОткуда тогда приложение на втором компе знает о блокировке записи и при попытке блокировки начинает ждать пока запись разблокируется Используюся внутрение механизмы фокса, скрытые от пользователя. авторВ какой-то момент пользователь добавляет новую запись через форму, сохраняет. Однако реально в таблицу ничего не сохраняется, а оказывается новая запись с пустыми полями (точнее с черточками ||||). Это происходит случайным образом Проверяй сетевое оборудование - гдето глючит. Или проблемы с сервером (скорее всего с оперативкой) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 10:52 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
Внутренние механизмы - это общие слова. Пока приходит на ум, что Fox-а передает запрос файл-серверу на блокировку части файла, файл-сервер реализует ее и т.д. Кто-то писал что типа Fox-a пишет о блокировках в заголовок таблицы, однако если он туда пишет, то файл должен изменяться в этот момент. На счет глюков в сети и на файл-сервере, это как-то туманно, так как других глюков на замечено, да и есть только несколько баз с которыми данные траблы происходят. К тому-же Вы действительно сталкивались с это проблемой из-за глюков в сети и на файл-сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 11:19 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
авторПока приходит на ум, что Fox-а передает запрос файл-серверу на блокировку части файла, файл-сервер реализует ее и т.д. Врядли - например новеловский сервер ничего о блокированой записи фоксом не знает. Можно получить инфу только о пользователях юзающих даную таблицу. авторКто-то писал что типа Fox-a пишет о блокировках в заголовок таблицы, однако если он туда пишет, то файл должен изменяться в этот момент В заголовке DBF нет места для такой инфы. Скорее всего фокс использует внутрение таблицы. О чем свидетельствует такой результат - если фоксовское приложение нафиг снести то все блокировки отмирают. авторК тому-же Вы действительно сталкивались с это проблемой из-за глюков в сети и на файл-сервере? Я сталкивался имено из-за проблем с файл-сервером. После замены на нормальную серверную платформу глюки исчезли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 11:55 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
авторСкорее всего фокс использует внутрение таблицы. О чем свидетельствует такой результат - если фоксовское приложение нафиг снести то все блокировки отмирают. Если фокс имеет внутренние таблицы - то где они, даже если они в оперативке и временные, то он туда должен записать инфу о имеющихся блокировках. Как видно: мы открыли приложение, оно подключилось к файлам таблицы, мы хотим заблокировать запись, и в этот момент получаем информацию о том что мы ее заблокировать не можем. Место для "внутренних таблиц" получается нет. Получается что инфа о блокировках хранится на стороне файл-сервера. Или в каких-то спец таблицах (типа как у access-a в общем доступе) однако таких таблиц не видно. Либо данный процесс осуществляется связкой ос файл-сервера-службы общего доступа к файлам. Просто хочется не гадать кто,что и где, а точно знать. Единственное что я нашел - это строки в описании FoxPro: "Блокировка осущесвляется средствами сетевой операционной системы..." и все :) И естественно если приложение отрубить то файл-сервер отреагирует (т.к. сеанс пропал) и разблокирует необх. часть файла (кстати, время реакции может быть разным и многие с этим боролись). Плохо, что я имею не совсем распростр. ос: TrueUnix 64, на нем samba установлена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 12:14 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
flockiПлохо, что я имею не совсем распростр. ос: TrueUnix 64, на нем samba установлена. Самба - это совсем отдельная песня... Версия какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 13:37 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
авторВерсия какая? Samba: Версия 2.2.7a На счет блокировок: если смотреть анализатором, то при блокировке записи, клиент посылает запрос по протоколу smb на блокировку, и сервер отвечает, что она состоялась. Соответсвенно при разблокировке, тоже посыдается запрос unlock и ответ сервера. Так что мне кажется ни каких внутр. таблиц нет, все работает ну уровне ОС сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 13:57 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
flockiSamba: Версия 2.2.7a В smb.conf чего написано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 14:52 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
См. приложенный файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 14:59 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
MrSmithСм. приложенный файл. А где приложенный файл??? smb.conf: workgroup = net netbios name = server protocol = NT1 server string = DS10/UNIX load printers = no printable = no guest account = pcguest lock directory = /usr/local/samba/var/locks socket options = IPTOS_LOWDELAY TCP_NODELAY os level = 65 wins support = yes domain master = yes local master = yes preferred master = yes map to guest = Bad User log file = /usr/local/samba/var/logs/log.%U encrypt passwords = yes [homes] comment = Home Directories browseable = no read only = no create mode = 0755 hide dot files = yes fake oplocks = yes [db002] comment = DB path = /shared/db public = no valid users = @db writable = yes create mask = 0775 directory mask = 0775 share modes = no ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 15:07 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
Попробую еще раз ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 15:11 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
авторПопробую еще раз ... Спасибо, теперь понятно. Кстати а в более поздних версиях, идеология такая-же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 15:25 |
|
||
|
Подскажите плиз по блокировкам
|
|||
|---|---|---|---|
|
#18+
Igor KorolyovСуть блокировки - наличие системной таблицы (не в плане dbf а таблица в памяти), управляемой ОС, куда и записывается информация о том, кто и чего заблокировал. После этого ОС при обращении к данному файлу выдаёт вопрошающему отлуп - дескать низя. Причём даже прочесть! Блокируется не весь файл (в общем случае), а некоторая его область - т.е. задаётся от какого смещения и на какую длинну нужно заблокировать данные. Причём размерность блокируемой области (как и всего файла) была ограничена 32-х разрядным числом (со времён DOS так повелось ещё). Т.е. максимум что мы могли заблокировать (точнее управлять блокировками) - это файл объёмом 4 Гб. Однако снова напомню - блокировка то не позволяет считывать данные - что сделал FoxTeam - очень просто, он стал блокировать не реальную область с данными, а виртуальное пространство за пределами этого файла - т.е. просто прибавил к начальному смещению половину от Max возможного значения - от чего мы и получили известное ограничение размера таблицы (равно как и cdx/fpt и прочих) в 2Гб. А проблемы происходят не из-за блокировок самих по себе, а из-за того, что любая современная ОС не пишет на диск побайтно, а имеет сложную систему кэширования. Т.е. с точки зрения проги запись ужа прошла, а реально (физически) она всё ещё не на диске, а в кэше ОС, откуда та и выдаёт данные по запросам прочих прог. Ессно что то как ОС пишет данные на диск (так сказать физически) и то, как их пишет прога (логически) - вещи не совпадающие, и потому при крахе ОС вполне может произойти порча файла (заметь - не обязательно заблокированного!) Достаточно чтобы туда вносились изменения, и ОС не успела их все сбросить из кэша. Полностью дискуссия на эту тему (в том числе и приведенная статья) здесь http://forum.foxclub.ru/read.php?5,74141,74243#msg-74243 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 14:55 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=266&tid=1592031]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 339ms |

| 0 / 0 |
