Форум » LetoDB, HbNetio. » Leto DB Server (продолжение 8) » Ответить

Leto DB Server (продолжение 8)

Pasha: Немного доработал документацию к letodb

Ответов - 273, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All

Pasha: Dima пишет: А в чем разница между leto_RecLock() и RLock() если база открыта с RDD Leto и нужно залочить текущую запись ? leto_RecLock предназначена для использования исключительно на сервере, в udf-функциях. А с клиента надо работать стандартными средствами rlock/flock/dbRLock На сервере их использовать нельзя, поскольку смысл блокировок на сервере другой. Сервер открывает файлы (при стандартном режиме) монопольно, и блокировки там выполняются логически.

Dima: Pasha Спасибо за разъяснения !

Pasha: Dima пишет: еще наблюдение. если пересобрать клиентское приложение то в 30% после первого запуска LETO_CONNECT выдаст -1 Я тоже напоролся на это. Пока 2 предположения: или служба "еще не до конца запустилась", а клиент уже коннектится к ней и валит ее (я службу постоянно останавливаю-пересобираю-запускаю-запускаю тест). Либо все-таки есть какой то баг в операциях с памятью, связанный с BM Но у меня эта ситуация возникает только в момент первого запуска теста после старта службы.


Dima: Pasha пишет: Но у меня эта ситуация возникает только в момент первого запуска теста после старта службы я тоже обратил на это внимание , закономерности пока не понял. в течении дня таких глюков больше не было. Pasha пишет: Либо все-таки есть какой то баг в операциях с памятью, связанный с BM Не знаю. Еще до того как начинаю юзать BM то падало на LETO_CONNECT() Если мне не изменяет память то еще до ввода BM такой глюк имел место , возможно сервис LetoDB еще не до конца запустился. В свое время именно из за этого я и не стал тестить Leto. Поживем , посмотрим , может и найдем что. А вообще LetoDB мне уже начинает нравиться ;) Мне вот просто интересно. В плане надежности имеет значение как юзать сервер Leto , как SERVICE или DAEMON ? Чисто в теории разницы в надежности и стабильности быть не должно.

Pasha: Сбросил изменения на CVS Для того, чтобы по команде SET FILTER формировался bitmap-фильтр, надо в letodb.ini задать параметр: ForceOpt = 1 А насчет демона - я, как только появилась служба, демон не использовал ни разу. Служба намного удобнее. Нет проблем с правами доступа. Запускает ее сама система, не нужен вход пользователя.

Dima: Pasha пишет: Сбросил изменения на CVS Спасибо , завтра проверю. Отпишу тут.

Pasha: Кстати, маленький ньюанс Я службу останавливать/запускать батником стал недавно, а до этого делал это через диспетчер служб. Там процесс запуска отображается на экране, и видно, когда служба запустилась. Поэтому тест "в процессе" никогда не коннектился. Если это делать из батника, то окончания запуска не видно, вот наверное и возникают накладки.

Dima: Pasha пишет: Я службу останавливать/запускать батником стал недавно Ну смотря как батник устроен. Если echo off то не видать ни чего а если echo on тогда виндец ошибку выдаст если что. Что то типа такого [pre2] The requested service has already been started. More help is available by typing NET HELPMSG 2182. [/pre2]

Pasha: Есть еще пара моментов. Во первых, при вызове LBM_dbSetFilterArray(), надо сбрасывать skip-буфер. Это я добавлю вечером. Во-вторых, я хочу все-таки сделать, чтобы не всякий фильтр строился как bitmap, а только если на клиенте также установлен _SET_FORCEOPT. Для этого эту настройку надо передавать серверу вместе с фильтром. Таким образом, на клиенте можно будет управлять, какой фильтр будет bitmap, а какой - обычный.

Dima: Да все заработало. По команде Set filter to так же ставится опт. фильтр. Но в этом случае LBM_DBGETFILTERARRAY() вернет 0 а это не правильно. Со сбросом фильтра все нормально. Есть правда не удобство но к нему можно и привыкнуть. LBM_DBSETFILTERARRAY({1,590,234,2345,7899,9000,700000}) go top // видим 7 записей LBM_DBSETFILTERARRAY({1,590) go top // видим 2 записи Тут все норм. А вот так нет Set filter to nomer==5 go top // видим 30 записей dbclearfilter() // нужно принудительно сбросить фильтр после Set filter to....... LBM_DBSETFILTERARRAY({1,590) go top // если фильтр не снять не увидим ни чего То есть поведение LBM_DBSETFILTERARRAY и у dbsetfilter() разное а должно быть одинаковое. В BMDBFCDX именно так

Dima: Dima пишет: copy file test.txt to (cserv+"test1.txt") Pasha пишет: Надо использовать функции leto_MemoWrite и leto_FileWrite Да работает leto_memowrite(cserv+"test1.txt",leto_memoread(cserv+"test.txt")) или же можно поблочно , считывать и писать с помощью Leto_FileRead , Leto_FileWrite

Dima: Pasha Закроешь эту тему когда посчитаешь нужным. Продолжение будет в Leto DB Server (продолжение 9)

Dima: Pasha я тут подумал. может оставить в покое DBsetfilter и пусть он работает как и работал до введения BM , если это сложно. для установки BM фильтра вполне достаточно иметь LBM_DBSETFILTERARRAY а оптимально заполнить массив как бы и не проблема.



полная версия страницы