powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос про одновременные коннекты к Firebird Embedded
6 сообщений из 31, страница 2 из 2
Вопрос про одновременные коннекты к Firebird Embedded
    #39760235
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

не много... пока один - формирует отчеты раз в 15 минут и отправляет в каталог, и вот, после слияния приложений, прибавится второй, который по факту делает репликацию с другой базой данных. Приходят файлы с изменениями, этот поток садит их в базу.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760242
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchik,

так у вас сервис? Что мне кажется плохой идея когда один сервис выполняет совершенно разные задачи. По мне лучше поставить полноценный сервер Firebird. А потом один сервис будет клепать отчёты, а второй репликацией заниматься.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760246
aidynchik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

нет почему сервис, это приложение по учету товаров, пользователь работает в ней постоянно, а отдельный поток Раз в 15 минут отправляет отчеты для начальника, и теперь прибавляется еще поток для репликации с другими торговыми точками.
Но в общем мысль вашу я понял
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760247
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchikКонечно, если физически несколько пользователей - то сервер ставится однозначно
Крайне желательно использовать полноценный сервер в любом случае.
Дело в том, что сервер FB - достаточно "вылизанное" приложение в плане надежности, вероятность его падания и порчи файла базы весьма невелика.

А если "упадет" твое приложение - то упадет и "Embedded server", вот и причина порчи файла базы.
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760259
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aidynchikнеужели на Firebird Embedded делают только однопоточные приложения

Делают всё что угодно, но это делают люди от приложений которых база не портится. Поэтому
у тебя выбора нет: надо ставить полноценный сервер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос про одновременные коннекты к Firebird Embedded
    #39760300
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 сервера, так как он используется другим приложением.

В итоге, первое стартующее приложение будет запускать сервер БД, а последнее завершающееся приложение - тушить его. При этом, при старте сервера БД можно указывать нестандартный порт, но приложения, естественно, должны об этом знать.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос про одновременные коннекты к Firebird Embedded
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]