использование BerkeleyDB в фильтре
Igor Sysoev
is at rambler-co.ru
Tue Mar 11 23:25:14 MSK 2008
On Tue, Mar 11, 2008 at 03:59:51PM +0200, Alexander Dolgarev wrote:
> Есть необходимость в фильтре для nginx работать с BerkeleyDB
> (Read-Write), правильно ли я понимаю, что открытие базы данных следует
> делать в callback'е для 'init process', а закрывать в 'exit process',
> т.е.
>
>
> ngx_module_t ngx_http_<module name>_module = {
> NGX_MODULE_V1,
> &ngx_http_<module name>_module_ctx, /* module context */
> ngx_http_<module name>_commands, /* module directives */
> NGX_HTTP_MODULE, /* module type */
> NULL, /* init master */
> NULL, /* init module */
> NULL, /* init process */ <------
> открытие DB
> NULL, /* init thread */
> NULL, /* exit thread */
> NULL, /* exit process */ <------
> закрытие DB
> NULL, /* exit master */
> NGX_MODULE_V1_PADDING
> };
>
>
> Еще вопрос, где можно хранить сам хандлер базы данных, кроме как в
> глобальной переменной, если инициализируем мы его при создании
> процесса?
Я мало работал с BDB, но под Апачём я открывал базу в фазе
"module initializer" в основном процессе.
В nginx'е я бы задал путь к базе в main conf и открывал бы базу
в "init main configuration" в основном процессе, а закрывал бы
в cleanup'е, привязанном к пулу конфигурации.
static ngx_http_module_t ngx_http_core_module_ctx = {
NULL, /* preconfiguration */
NULL, /* postconfiguration */
ngx_http_<...>_create_main_conf, /* create main configuration */
ngx_http_<...>_init_main_conf, /* init main configuration */
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list