|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Симонов Денис, не много... пока один - формирует отчеты раз в 15 минут и отправляет в каталог, и вот, после слияния приложений, прибавится второй, который по факту делает репликацию с другой базой данных. Приходят файлы с изменениями, этот поток садит их в базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 12:51 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchik, так у вас сервис? Что мне кажется плохой идея когда один сервис выполняет совершенно разные задачи. По мне лучше поставить полноценный сервер Firebird. А потом один сервис будет клепать отчёты, а второй репликацией заниматься. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 13:00 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
Симонов Денис, нет почему сервис, это приложение по учету товаров, пользователь работает в ней постоянно, а отдельный поток Раз в 15 минут отправляет отчеты для начальника, и теперь прибавляется еще поток для репликации с другими торговыми точками. Но в общем мысль вашу я понял ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 13:05 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchikКонечно, если физически несколько пользователей - то сервер ставится однозначно Крайне желательно использовать полноценный сервер в любом случае. Дело в том, что сервер FB - достаточно "вылизанное" приложение в плане надежности, вероятность его падания и порчи файла базы весьма невелика. А если "упадет" твое приложение - то упадет и "Embedded server", вот и причина порчи файла базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 13:07 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchikнеужели на Firebird Embedded делают только однопоточные приложения Делают всё что угодно, но это делают люди от приложений которых база не портится. Поэтому у тебя выбора нет: надо ставить полноценный сервер. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 13:32 |
|
Вопрос про одновременные коннекты к Firebird Embedded
|
|||
---|---|---|---|
#18+
aidynchikОго, какая полемика :) В итоге, если слить все в одно многопоточное приложение - сервер Файрберд ставить нет надобности?Есть еще вариант - без установки сервера, но с использованием оного в application mode. При этом, достаточно приложениям указать где лежит снапшот сервера. Алгоритм прост - все использующие FirebirdSQL Server в application mode приложения используют один и тот же алгоритм запуска: 1. Каждое стартующее приложение пытается открыть pid файл для хранения в текстовом виде идентификатора процесса FirebirdSQL сервера, запущенного в application mode (назовём этот файл "fbsvr.pid") из каталога со снапшотом сервера в режиме на запись с параметром shared deny write (SH_DENYWR); 2. Если создание/открытие файла "fbsvr.pid" прошло успешно, стартуем FirebirdSQL сервер в application mode и пишем pid его процесса в файл "fbsvr.pid" удерживая файл в открытом состоянии; 3. Если создание/открытие файла в режиме на запись не увенчалось успехом по причине того, что файл уже заблокирован другим процессом, пытаемся открыть файл на чтение и прочесть через fscanf идентификатор процесса FirebirdSQL сервера в цикле до тех пор, пока не удастся прочесть этот идентификатор (на случай, если процесс, запускающий FirebirdSQL сервер, еще не успел записать идентификатор в открытый им на запись файл "fbsvr.pid") и также оставляем файл открытым; 4. При завершении работы каждого приложения закрываем файл "fbsvr.pid", пытаемся его удалить и если удаление прошло успешно, находим по идентификатору процесса хендл окна FirebirdSQL сервера и посылаем ему PostMessage(hwnd, WM_COMMAND, (WPARAM)IDM_SHUTDOWN, 0), где IDM_SHUTDOWN взят из заголовочного файла "iscguard.rh" (в исходниках сервера); 5. Если удаление файла "fbsvr.pid" не увенчалось успехом, просто закрываем приложение, не завершая работу FirebirdSQL сервера, так как он используется другим приложением. В итоге, первое стартующее приложение будет запускать сервер БД, а последнее завершающееся приложение - тушить его. При этом, при старте сервера БД можно указывать нестандартный порт, но приложения, естественно, должны об этом знать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2019, 14:56 |
|
|
start [/forum/topic.php?fid=40&msg=39760242&tid=1560842]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
others: | 331ms |
total: | 429ms |
0 / 0 |