использование 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