Автор | Сообщение |
|
| |
Пост N: 2728
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.03.13 11:27. Заголовок: Leto DB Server (продолжение 10) (продолжение)
Продолжаем тут
|
|
|
Ответов - 191
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|
|
| |
Пост N: 4618
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.03.15 16:17. Заголовок: Я пробовал играться ..
Я пробовал играться с аналогом LETO_SETSKIPBUFFER , в ADS и особого ускорения не увидел. Пробовал руками разные значения и спец функцию........ Функция такая , для определения кол-ва кэшируемых записей Func LenReCash(als) local ret:=0 local i FOR i = 1 TO (als)->(fcount()) ret+=(als)->(FIELDSIZE(i)) NEXT ret+=4 return int((65535/ret)/5.4)
|
|
|
|
| moderator
|
Пост N: 879
Зарегистрирован: 06.07.06
|
|
Отправлено: 28.03.15 17:02. Заголовок: Честно говоря, не по..
Честно говоря, не понял, как это определяет количество кэшируемых записей и что это за магические числа = 65535 и 5.4 :). Не помню уже аналог из ADS, но для LetoDB эта функция ( leto_setskipbuffer()) реально работает, если применять ее по назначению - например, увеличить буфер при последовательном чтении dbf.
|
|
|
|
| |
Пост N: 4619
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.03.15 17:17. Заголовок: alkresin пишет: Не ..
alkresin пишет: цитата: | Не помню уже аналог из ADS |
| AdsCacheRecords()
|
|
|
|
| |
Пост N: 102
Зарегистрирован: 23.06.08
|
|
Отправлено: 28.03.15 19:18. Заголовок: alkresin пишет: Пут..
alkresin пишет: цитата: | Путь к библиотекам прописан: /apps/harbour/lib, а они у вас, по вашим словам, в /apps/harbour/lib/linux/gcc/libhbvm.a |
| Спасибо, действительно, не обратил внимания. Но теперь возникла другая ошибка: gcc obj/linux/server.o obj/linux/common.o obj/linux/hbip.o obj/linux/common_c.o obj/linux/blowfish.o obj/linux/leto_2.o obj/linux/letofunc.o obj/linux/letolist.o obj/linux/letoacc.o obj/linux/letovars.o obj/linux/leto_lnx.o obj/linux/errint.o obj/linux/errorsys.o -obin/letodb -L/apps/harbour/lib -Wl,--start-group -lhbvm -lhbrtl -lhbcpage -lhblang -lhbrdd -lhbrtl -lhbmacro -lhbpp -lgtstd -lrddntx -lrddcdx -lrddfpt -lhbcommon -lhbsix -Wl,--end-group -lm -lpthread obj/linux/leto_2.o: In function `thread2': leto_2.c:(.text+0x79d): undefined reference to `hb_vmThreadInit' leto_2.c:(.text+0x918): undefined reference to `hb_vmThreadQuit' collect2: ld returned 1 exit status make: *** [bin/letodb] Error 1
|
|
|
|
| moderator
|
Пост N: 880
Зарегистрирован: 06.07.06
|
|
Отправлено: 28.03.15 19:38. Заголовок: SkyNET пишет: gcc ...
SkyNET пишет: цитата: | gcc ... -obin/letodb -L/apps/harbour/lib -Wl,--start-group -lhbvm -lhbrtl ... |
| Вообще-то здесь должна быть hbvmmt, а не hbvm. Какая у вас версия letodb и где вы ее взяли ?
|
|
|
|
| moderator
|
Пост N: 881
Зарегистрирован: 06.07.06
|
|
Отправлено: 28.03.15 19:50. Заголовок: alkresin пишет: Как..
alkresin пишет: цитата: | Какая у вас версия letodb и где вы ее взяли ? |
| Ясно, у нас там лежит для скачивания старая версия. Воспользуйтесь CVS: @echo off SET CVSROOT=:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb SET HOME=C:\CVS\ c:\cvs\cvs login c:\cvs\cvs checkout -r rel-1-mt -P letodb Или на Sourceforge вот тут: http://letodb.cvs.sourceforge.net/viewvc/letodb/letodb/?pathrev=rel-1-mt внизу страницы - Download GNU tarball
|
|
|
|
| moderator
|
Пост N: 882
Зарегистрирован: 06.07.06
|
|
Отправлено: 28.03.15 20:32. Заголовок: Загрузил на Sourcefo..
Загрузил на Sourceforge letodb-2.15-src.zip - самые свежие исходники.
|
|
|
|
| |
Пост N: 103
Зарегистрирован: 23.06.08
|
|
Отправлено: 29.03.15 17:46. Заголовок: alkresin пишет: Ясн..
alkresin пишет: цитата: | Ясно, у нас там лежит для скачивания старая версия. |
| alkresin пишет: Спасибо, с новой версией собралось без проблем.
|
|
|
|
| постоянный участник
|
Пост N: 4073
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.03.15 18:12. Заголовок: alkresin пишет: Все..
alkresin пишет: цитата: | Все, что между begin transaction ... end transaction отправляется на сервер одним пакетом. |
| Что то не компилируется... Выдает ошибку: Harbour 3.2.0dev (r1503131756) Copyright (c) 1999-2015, http://harbour-project.org/ demo_letodb.prg(269) Error E0030 Syntax error "syntax error at 'TRANSACTION'" demo_letodb.prg(298) Error E0010 ENDIF does not match IF 2 errors Может в коде неправильно ставлю ? Скрытый текст bErrHandler := ErrorBlock( { | VAR | BREAK( VAR ) } ) BEGIN SEQUENCE USE ( cFileDbf2 ) Alias TEMP866 NEW VIA "DBFCDX" CODEPAGE "RU866" SHARED RECOVER MsgStop( "БАЗА (BASE)" + cFileDbf2 + " уже открыта (now open) !", "Ошибка ! Error !" ) RETURN END SEQUENCE ErrorBlock( bErrHandler ) SELECT TEMP866 aDbf := DbStruct() // создание базы 1251 / create a database 1251 cFileDbf := cPathServer + "test1251.dbf" DBCreate( cFileDbf, aDbf, "LETO" ) USE ( cFileDbf ) Alias TEMP1251 NEW VIA "LETO" CODEPAGE "RU1251" EXCLUSIVE begin transaction SELECT TEMP866 GOTO TOP DO WHILE !EOF() // считываем значение полей в массив aFieldArray := {} FOR nI := 1 TO FCOUNT() AADD( aFieldArray, FIELDGET( nI ) ) NEXT SELECT TEMP1251 APPEND BLANK FOR nI := 1 TO FCOUNT() FIELDPUT( nI, aFieldArray[ nI ] ) NEXT SELECT TEMP866 SKIP ENDDO end transaction CLOSE TEMP866 CLOSE TEMP1251
|
|
|
|
|
| постоянный участник
|
Пост N: 1039
Зарегистрирован: 27.01.07
|
|
Отправлено: 29.03.15 20:01. Заголовок: 1. REQUEST LETO не з..
1. REQUEST LETO не забыл? 2. И может на самом деле проблема в "demo_letodb.prg(298) Error E0010 ENDIF does not match IF" ?
|
|
|
|
| moderator
|
Пост N: 883
Зарегистрирован: 06.07.06
|
|
Отправлено: 29.03.15 20:04. Заголовок: Это я уже подзабыл. ..
Это я уже подзабыл. Правильно будет: LETO_BEGINTRANSACTION() ... LETO_COMMITTRANSACTION()
|
|
|
|
|
| постоянный участник
|
Пост N: 1040
Зарегистрирован: 27.01.07
|
|
Отправлено: 29.03.15 20:06. Заголовок: alkresin пишет: Пра..
alkresin пишет: цитата: | Правильно будет: LETO_BEGINTRANSACTION() ... LETO_COMMITTRANSACTION() |
| Да, точно. )
|
|
|
|
| постоянный участник
|
Пост N: 517
Зарегистрирован: 17.02.12
|
|
Отправлено: 29.03.15 21:04. Заголовок: Andrey а мой пример..
Andrey а мой пример не смотрел ? там же все есть, даже с буфером для транзакции (его размер по умолчанию, раньше был небольшой и при широкой записи были проблемы - буфер перевыделялся и загрузка шла долго, потом Pasha подправлял) я всегда использую буфер
|
|
|
|
| |
Пост N: 4621
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.03.15 21:19. Заголовок: Andrey Заведи #comm..
Andrey Заведи #command BEGIN TRANSACTION => LETO_BEGINTRANSACTION() #command END TRANSACTION => LETO_COMMITTRANSACTION()
|
|
|
|
| постоянный участник
|
Пост N: 4074
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.03.15 22:54. Заголовок: Dima пишет: а мой п..
Dima пишет: цитата: | а мой пример не смотрел ? |
| Смотрел, просто решил маленький пример сначала сделать, а потом уж поболее делать. PSP пишет: цитата: | 1. REQUEST LETO не забыл? 2. И может на самом деле проблема в "demo_letodb.prg(298) Error E0010 ENDIF does not match IF" ? |
| 1) Стоит. 2) до этого не доходить, ошибка компиляции до этого, а эта ошибка неправильно вылазит..
|
|
|
|
| постоянный участник
|
Пост N: 4075
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.03.15 23:06. Заголовок: alkresin пишет: LET..
alkresin пишет: цитата: | LETO_BEGINTRANSACTION() ... LETO_COMMITTRANSACTION() |
| Компилирует нормально, но вылетает при работе: Error DBFCDX/1031 Синтаксическая ошибка</p><BR> Called from LETO_COMMITTRANSACTION(0) Called from CREATEDBF1251(290) Called from (b)MAIN(87) Called from _DOCONTROLEVENTPROCEDURE(1651) Called from EVENTS(1516) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1373) Called from MAIN(125) Строка (290) - LETO_COMMITTRANSACTION()
|
|
|
|
| постоянный участник
|
Пост N: 4076
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.03.15 01:16. Заголовок: alkresin пишет: Ест..
alkresin пишет: цитата: | Естественно, это же 4000 обращений к серверу и 4000 ответов. Оформите это как транзакцию, или серию транзакций по группе записей в пакете - и количество обращений туда-сюда, а, соответственно, и затраченное время в разы уменьшится. |
| Я был не прав. Тормоза в тесте были от показа GRID'a ! Сделал правильный тест, 5000 записей (4 поля) : 1) отправка на сервер в инете (в моем городе) БЕЗ транзакций: 15 сек. 2) отправка на сервер в инете (в Москву) БЕЗ транзакций: 1 мин. 57 сек. Просто супер... Не знаю как дальше будет, если базу увеличить... Бегунок тоже сделал.... Только AVI-ка замирает при передаче... Не особенно красиво, хотя собираю с ключом -mt. Кому интересно - вот пример на МиниГуи https://cloud.mail.ru/public/0a167351289f/LetoDB-demo-MiniGui.7z
|
|
|
|
| постоянный участник
|
Пост N: 518
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.03.15 08:25. Заголовок: Andey пишет: вот при..
Andey пишет: 1. вынеси connect до окна (если его нет, то сообщение и конец) или в oninit (тогда сначала контрлы hide или disable, если connect есть переводи в рабочее соостояние, иначе сообщение ...). 2. в цикл загрузки ставь do events 3. если файл на сервере постоянный и с индексами, то делай OrdSetFocus(0), zap, загрузку, reindex, OrdSetFocus(1) 4. не мучай grid перезагрузкой Item-ов, используй browse (skipbuffer устанавливай в кол-во строк в browse (default 10)) 5. получить длину записи области RecSize()+1, или посчитать длины из dbStruct() и +1.
|
|
|
|
| moderator
|
Пост N: 884
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.03.15 09:53. Заголовок: Andrey пишет: Компи..
Andrey пишет: цитата: | Компилирует нормально, но вылетает при работе: Error DBFCDX/1031 Синтаксическая ошибка</p><BR> Called from LETO_COMMITTRANSACTION(0) |
| Вставьте перед LETO_COMMITTRANSACTION(): SELECT TEMP1251 Уж не помню, почему это было сделано, но при committransaction текущей должна быть удаленная таблица.
|
|
|
|
| постоянный участник
|
Пост N: 519
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.03.15 10:15. Заголовок: Andrey пишет:Строка ..
Andrey пишет: цитата: | Строка (290) - LETO_COMMITTRANSACTION() |
| транзакция leto для областей rdd LETO, для др. rdd могут быть свои механизмы транзакций ... SELECT TEMP866 SKIP ENDDO // здесь DBFCDX !!! LETO_COMMITTRANSACTION() //end transaction alkresin пишет: цитата: | Вставьте перед LETO_COMMITTRANSACTION(): SELECT TEMP1251 |
| +1 SergKis пишет: цитата: | // текущий alias это LETO таблица - leto_BeginTransaction(nMaxBuf)... |
| просто Андрею немного внимательней надо см. примеры
|
|
|
Ответов - 191
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|