ngx_http_conf_get_module_main_conf questions

vagner nginx-forum at nginx.us
Mon Jun 3 21:19:42 UTC 2013


Maxim Dounin Wrote:
-------------------------------------------------------
> Hello!
> 
> On Sun, Jun 02, 2013 at 06:46:54PM -0400, vagner wrote:
> 
> > Максим, спасибо за ответ
> > Вот код:
> >
> https://github.com/svagner/ngx_filestats_module/blob/master/ngx_http_f
> ilestats_module.c
> 
> И где проблема?
> 
> > Я понял, где сделал изначальную глупость - я попытался реализовать
> каунтеры
> > в пространстве конфига модуля. Для этого подойдет скорее шаред пул,
> как это
> > и было сделано у ustats модуля.
> 
> Счётчики в конфиге - должны работать при условии одного рабочего 
> процесса.  Счётчики в разделяемой памяти - дают возможность 
> считать что-либо в рамках нескольких рабочих процессов.
> 
> > Как вы думаете, мне лучше создать шаред пулы
> > для всех листов (ngx_http_filestats_time2size_t.timeouts &&
> > ngx_http_filestats_loc_conf_t.size2time), а потом связать их общей
> > структурой через указатели?
> > У меня пока плохо вырисовывается в голове каким образом используя
> > ngx_shared_memory_add можно связать все листы и при этом получать
> доступ к
> > этой памяти из контекста других модулей:(
> 
> Имеет смысл сделать одну зону разделяемой памяти на модуль, и 
> дальше уже выделять память из неё по потребности.
> 
> Но вообще я бы рекомендовал для начала не связываться с 
> разделяемой памятью, и в первую очередь добиться, чтобы всё 
> работало без неё.
> 
> -- 
> Maxim Dounin
> http://nginx.org/en/donation.html
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru


Спасибо большое за помощь. Добился того, чтобы все работало с одним
веркером. Единственное, что очень бросается в глаза, это использование
указателя на структуру ngx_http_filestats_loc_conf_t для того, чтобы при
использовании конфигураций других локейшенов я мог получать валидные данные
с настройками указанными в конфиге. Вы не могли бы подсказать, где можно
посмотреть реализацию работы с ngx_shm? Мне нужно вставить в шаренную память
листы, чтобы я мог избавиться от указателя, и чтобы хранить данные не
сохраняя оффсетов, смогу ли я каким либо образом вторым аргументом к функции
ngx_list_init использовать ngx_shm_zone_t?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,239774,239808#msg-239808



Подробная информация о списке рассылки nginx-ru