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

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

Dima: Продолжаем тут

Ответов - 191, стр: 1 2 3 4 5 6 7 8 9 10 All

Andrey: SergKis пишет: просто Андрею немного внимательней надо см. примеры Да это уж точно... Просто внимания уже не хватает, раньше быстрей схватывал.

Dima: Andrey Так может тебе сюда уже ;) http://clipper.borda.ru/?1-1-0-00000427-000-140-0#060

marrinass: Dima пишет: Продолжаем тут Как-то странно создано продолжение. А где начало? Открываешь тему, жмёшь на стр. 2 или 3 и остальные стр. в перечислении пропадают!


Andrey: Dima пишет: Andrey Так может тебе сюда уже Согласен ! Нечего засорять ветку другими сообщениями... marrinass пишет: Открываешь тему, жмёшь на стр. 2 или 3 и остальные стр. в перечислении пропадают! Ага, и у меня так же...

Andrey: Тест, 5000 записей (4 поля) : 1) отправка на сервер через инете (в моем городе) БЕЗ транзакций: 13 сек. отправка на сервер через инете (в моем городе) С транзакцией: 4 сек. 2) отправка на сервер через инете (сервер в Москве) БЕЗ транзакций: 2 мин. 01 сек. отправка на сервер через инете (сервер в Москве) С транзакций: 3 сек.

Softlog86: Вопрос к гуру : Есть - WEB-сайт . Крутится вроде на LINUX (точную версию пока не знаю) . Там есть MySQL и кой-какие базы (для сайта) работают . Хочется использовать сайт для обмена данными с программами на Harbour : Запись информации в БД на сервер , Скачивание , выборка по параметрам , и т д . Он-лайн торговля (через клиентское приложение ) Отсюда два варианта : 1) Использовать MySQL 2) Использовать LETO_DB По первому варианту - не могу понять в какую сторону рыть для начала .... По второму - видимо нужно скомпилировать LETO_DB для работы в LINUX .... опять-же - трудности с этим .... Если кто-то может дать подробную инструкцию - буду благодарен ! Сам склоняюсь к использованию LETO_DB .... :)

Andrey: Softlog86 пишет: По второму - видимо нужно скомпилировать LETO_DB для работы в LINUX .... опять-же - трудности с этим .... Если кто-то может дать подробную инструкцию - буду благодарен ! http://dimao.blogspot.ru/p/blog-page.html Без точной версии LINUX собрать невозможно.

Softlog86: Версию узнаем .... Вопрос - кто соберет под нужную ОС ? : и поможет с запуском sm20: Server Type : Apache/2.2.14 (FreeBSD) PHP/5.2.12 with Suhosin-Patch mod_fcgid/2.3.5 mod_ssl/2.2.14 OpenSSL/0.9.7e-p1

SergKis: Andrey ты просил набросать. вот что то набрал (дополняй сам): [pre2] STATIC lLetoConnect := .F. FUNCTION MAIN() LOCAL cTable, cAlias, nSkip, hBrowse LOCAL cFileDbf .... IF ! myConnnect() RETURN NIL ENDIF cFileDbf := cPathLocal + "test866.dbf" cTable := cPathServer+"test1251.dbf" cAlias := "TEST_1251" // ------ я выношу проверку и создание таблиц в отдельный модуль aStru := { ; { "FIO" , "C", 25, 0 }, ; { "STATUS" , "C", 10, 0 }, ; { "CLASS" , "C", 4, 0 }, ; { "ID" , "+", 4, 0 } ; } aIndex := { ; {'FIO', 'UPPER(FIO)', .F.} ; } IF ! file(cFileDbf) // ... // создаем файл cFileDbf !!! // ... ENDIF IF ! Table_Create( cTable, aStru, aIndex) MsgStop('Table not create :'+ chr(10))+cTable, 'ERROR') RETURN NIL ENDIF // ------ IF ! Table_Open(cTable, cAlias, .T.) MsgStop('Table not open :'+ chr(10))+cTable, 'ERROR') RETURN NIL ENDIF DEFINE WINDOW Form_6 ; ... @ 55, 10 BROWSE Browse_1 WIDTH 575 HEIGHT 130 ; HEADERS { '№№', 'ФИО/FIO', 'Статус/Status', 'Класс/Class' } ; WORKAREA &cAlias ; WIDTHS { 60, 280, 110, 100 } ; FIELDS {"ID", "FIO", "STATUS", "CLASS"} ; FONT "Tahoma" SIZE 10 BOLD ; BACKCOLOR aGrColor ; DYNAMICFORECOLOR { fColor , fColor, fColor, fColor } ; DYNAMICBACKCOLOR { fColor2, fColor2, fColor2, fColor2 } // ставим размер skip buffer (можно в on init это сделать) hBrowse := Form_6.Browse_1.Handle // GetControlHandle("Browse_1", ThisWindow.Name) nSkip := ListViewGetCountPerPage(hBrowse) // строк на browse ( cAlias )->( LETO_SETSKIPBUFFER( nSkip ) ) // // ... END WINDOW ... RETURN NIL /////////////////////////////////////////////////////////////////////////// FUNC myConnect() LOCAL nRes IF ( leto_Connect( cPathServer ) ) == - 1 nRes := leto_Connect_Err() IF nRes == LETO_ERR_LOGIN cMsg := "Login failed to LetoDB" ELSEIF nRes == LETO_ERR_RECV cMsg := "Recv Error to LetoDB" ELSEIF nRes == LETO_ERR_SEND cMsg := "Send Error to LetoDB" ELSE cMsg := "No connection to LetoDB" ENDIF MsgStop( cMsg , "Error" ) RETURN .F. ENDIF lLetoConnect := .T. // connect есть RETURN .T. /////////////////////////////////////////////////////////////////////////// FUNC Table_Open( cTable, cAlias, lShared ) // открываем таблицу LOCAL lRet IF ! lLetoConnect; RETURN .F. ENDIF Default lShared := .T. lRet := UseArea( cTable, cAlias, lShared, 'LETO') IF lRet .and. OrdCount() > 0 // есть индекс подключаем OrdSetFocus(1) dbGotop() ENDIF RETURN lRet /////////////////////////////////////////////////////////////////////////// FUNC Table_Create( cTable, aStru, aIndex ) // создание таблицы LOCAL lTable, cPath, cFile, cExt, cTag, cKey, lUnique, i,j,k IF ! lLetoConnect; RETURN .F. ENDIF hb_FNameSplit(cTable, @cPath, @cFile, @cExt) IF empty(cExt); cTable += '.dbf' ENDIF lTable := leto_file(cTable) IF ! lTable leto-fErase(cPath+cFile+'.cdx') dbCreate(cTable, aStru, 'LETO', .T., "") // можно задать алиас вместо "" IF hb_IsArray(aIndex) k := len(aIndex) FOR i := 1 TO k cTag := aIndex[ i ][1] // Tag Name cKey := aIndex[ i ][2] // Tag Key lUnq := aIndex[ i ][3] // Tag Unique OrdCreate( , cTag, cKey, &( "{||" + cKey + "}" ), lUnq ) NEXT ENDIF dbCloseArea() lTable := .T. ENDIF RETURN lTable FUNC Dbf_2_Table( cFileDbf, cTable, lZap ) // load dbf 866 в таблицу LOCAL nInp, nKol, nCnt, nDel, nAdd, i, k LOCAL nLenRec, nMaxBuf, nKolBuf IF ! file(cFileDbf) MsgStop('File not found !'+chr(10)+cFileDbf, "ERROR") RETURN .F. ENDIF USE ( cFileDbf ) ALIAS TEMP866 CODEPAGE "RU866" VIA "DBFCDX" //NEW SHARED IF ! Used() MsgStop('File not open !'+chr(10)+cFileDbf, "ERROR") RETURN .F. ENDIF nInp := select() IF ! Table_Open(cTable, , .T.) // exclusive ( nInp )->( dbClosearea() ) MsgStop('Table not open !'+chr(10)+cTable, "ERROR") RETURN .F. ENDIF IF OrdCount() > 0 // есть индекс отключаем OrdSetFocus(0) dbGotop() ENDIF IF ! empty(lZap) // очистим таблицу ZAP ENDIF k := fCount() - 1 // последнее поле (ID) не учитываем - заполняет rdd // таблица LETO открыта exclusive nLenRec := RecSize()+1 // длина записи передаваемой на сервер (Как считать ?) = кол-ву символов полей в БД ? nKolBuf := 1000 // кол-во записей в буфере транзакции nMaxBuf := (nKolBuf+1) * nLenRec // размер буфера транзакции nKol := 0 // счетчик записей для транзакции nCnt := 0 // общий счетчик записей nDel := 0 // счетчик удаленных nAdd := 0 // счетчик реально добавленных // текущий alias это LETO таблица - // ------ здесь уст. начальную позицию бегунка - индикатора leto_BeginTransaction(nMaxBuf) DO WHILE ! ( nInp )->( EOF() ) IF nKol >= nKolBuf nKol := 0 IF leto_InTransaction(); leto_CommitTransaction() ENDIF // ------ здесь меняем позицию бегунка - индикатора DO EVENTS // ------ leto_BeginTransaction(nMaxBuf) ENDIF nCnt++ nKol++ dbAppend() IF ! NetErr() nAdd++ FOR i := 1 TO k // из ( nInp )-> .... переносим данные Fields FieldPut( i, ( nInp )->FieldGet(i) ) NEXT IF ( nInp )->( deleted() ) // на входе запись удаленная dbDelete() nDel++ ENDIF ENDIF ( nInp )->dbSkip(1) ENDDO IF leto_InTransaction(); leto_CommitTransaction() ENDIF dbCommit() dbGotop() IF OrdCount() > 0 // есть индекс REINDEX OrdSetFocus(1) dbGotop() ENDIF ( nInp )->( dbCloseArea() ) // ------ здесь завершаем позицию бегунка - индикатора Form_6.Browse_1.Refresh RETURN .T. /////////////////////////////////////////////////////////////////////////// FUNC UseArea( cFile, cAls, lShare, cRdd, nWhl ) // Открыть таблицу или DBF LOCAL w := 10, lRet, oError, bOldError, lAuto, lLeto LOCAL cPth, cFil, cExt IF hb_IsNumeric(nWhl) .and. nWhl > 0; w := nWhl ENDIF IF ! hb_IsChar(cRdd); cRdd := RddSetDefault() ENDIF lLeto := ( cRdd == 'LETO' ) IF lLeto; lAuto := Set( _SET_AUTOPEN, .T. ) ENDIF select 0 IF empty(cAls) .or. ! hb_IsChar(cAls) // алиас не задан - формируем сами hb_FNameSplit(cFile, @cPth, @cFil, @cExt) cAls := upper(cFil) IF select(cAls) > 0; cAls := '_XYZ_'+hb_ntos(select()) ENDIF ENDIF IF ! hb_IsLogical(lShare); lShare := .T. ENDIF NetErr( .F. ) bOldError := ErrorBlock({ |oErr| break(oErr) }) DO WHILE w-- > 0 BEGIN SEQUENCE lRet := DbUseArea(.F., cRdd, cFile, cAls, lShare, .F.) RECOVER USING oError lRet := .F. END SEQUENCE IF lRet .AND. ! NetErr() lRet := Used() EXIT ENDIF hb_IdleSleep(0.2) ENDDO ErrorBlock( bOldError ) IF lLeto; Set( _SET_AUTOPEN, lAuto ) ENDIF RETURN lRet [/pre2] если что спрашивай

SergKis: Andrey вместо LOCAL ... lUnique надо lUnq в FUNC Table_Create(...)

SergKis: Dima не увидел про перенос темы, извини и перекинь мои крайние посты тоже. Спасибо

SergKis: Softlog86 Есть - WEB-сайт 1. он Ваш или сторонний и у вас только hosting ? 2. он на CMS или как то иначе ? 3. Он-лайн торговля (через клиентское приложение ) на hb или как то иначе ?

Andrey: SergKis пишет: если что спрашивай Слишком много буковок... Пошёл разбираться.... СПАСИБО БОЛЬШОЕ !

Softlog86: 2 SergKis отвечаю : 1. он Ваш или сторонний и у вас только hosting ? -> НАШ - связь с автором сайта ЕСТЬ 2. он на CMS или как то иначе ? -> не знаю что это такое :( спросим у автора 3. Он-лайн торговля (через клиентское приложение ) на hb или как то иначе ? -> есть клиентское приложение на HARBOUR+MINIGUI - программа прайс-лист с возможностью заказов (плюс базы данных по кросс-кодам и тд - .DBF) собственно это приложение и хочу переделать для работы не по FTP а сразу с БД на сервере ....

SergKis: Softlog86 Спасибо. понятно, что в данном случае все в ваших руках. и если используется cms (инструмент создания сайтов) с mysql, то из своего приложения туда тоже можно достучаться, есть rdd в hb для работы с mysql

Dima: marrinass пишет: Открываешь тему, жмёшь на стр. 2 или 3 и остальные стр. в перечислении пропадают! Это косяк движка форума.

SergKis: Dima пишет:Это косяк движка форума в GUI потыкал некоторые темы, там нормально.

alkresin: Softlog86 пишет: Запись информации в БД на сервер , Скачивание , выборка по параметрам , и т д . Он-лайн торговля (через клиентское приложение ) Отсюда два варианта : 1) Использовать MySQL 2) Использовать LETO_DB Слишком мало конкретной информации, чтобы посоветовать тот или иной вариант. Вот, например, клиентское приложение для онлайн торговли - что имется ввиду, веб-магазин ? По первому варианту - не могу понять в какую сторону рыть для начала .... contrib/hbmysql - вполне работающая библиотека, я ее лет 10 назад начал использовать для некоторых мелочей. По второму - видимо нужно скомпилировать LETO_DB для работы в LINUX .... опять-же - трудности с этим .... А какие именно трудности ? Просто запускаете make_linux.sh, предварительно поставив свои пути Harbour.

alkresin: Andrey пишет: Без точной версии LINUX собрать невозможно. Версия Linux не имеет значения. Главное - правильно указать пути к Harbour, самому компилятору, библиотекам и include.

Softlog86: Если-б кто скинул готовый LITO_DB сервер для указанной системы (FreeBSD).... для пробы пера так сказать .... (пока устанивлю LINUX , пока скачаю нужные компоненты для компиляции ... нет времени ... ведь есть основная работа и она не ждёт ) Пойду тормошить разработчика сайта чтоб сказал что делать для запуска LETO на WEB_сервере .....



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