ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Сбор статистики о файле



Игорь, я попробовал на
nginx version: nginx/0.3.41
built by gcc 3.4.2 [FreeBSD] 20040728.
При наличии post_action в location не вызывает cleanup процедура.
Сейчас пойду попробую найти разницу в логах на develop nginx'е.
Без post_action моя cleanup процедура вызывается нормально. Может там
не передаётся цепочка или ещё что?

On 4/21/06, Igor Sysoev <is@xxxxxxxxxxxxx> wrote:
> On Fri, 21 Apr 2006, ForJest wrote:
>
> > Игорь, а где исправить, чтобы начало работать и post_action и cleanup
> > процедура? Я могу сделать workaround в этом самом post_action, но хочу
> > сделать по уму.
>
> cleanup и post_action не связаны. cleanup вызывается только для основного
> запроса.
>
> > On 4/21/06, Igor Sysoev <is@xxxxxxxxxxxxx> wrote:
> >> On Fri, 21 Apr 2006, ForJest wrote:
> >>
> >>> Игорь, а при наличии post_action данная конструкция и не должна
> >>> срабатывать? Как можно сделать чтобы cleanup-процедура работала и с
> >>> post_action?
> >>> Я точно не проверял, но вот на develop nginx'е 0.3.37 cleanup
> >>> процедура отрабатывает. А на тестовом, у которого есть post_action
> >>> (0.3.40) - нет.
> >>
> >> cleanup на данный момент не отрабатывает на keep-alive соединениях.
> >> В 0.3.41 это будет исправлено.
> >>
> >>> On 4/18/06, Igor Sysoev <is@xxxxxxxxxxxxx> wrote:
> >>>> On Tue, 18 Apr 2006, ForJest wrote:
> >>>>
> >>>>> Единственно что - я не придумал ничего лучше чем вставить регистрацию
> >>>>> cleanup процедуры в фильтр тела ответа, по флагу. Я не нашёл способа,
> >>>>> как получить request_t где-нибудь в инциализации или создании conf.
> >>>>> Может есть лучшее место?
> >>>>> -------
> >>>>>     if (!conf->is_finish_inited)
> >>>>>     {
> >>>>>          cln = ngx_http_cleanup_add(r, 0);
> >>>>>          if (cln == NULL) {
> >>>>>              ngx_http_finalize_request(r, 
> >>>>> NGX_HTTP_INTERNAL_SERVER_ERROR);
> >>>>>              return NGX_ERROR;
> >>>>>          }
> >>>>>
> >>>>>          cln->handler = ngx_http_request_stats_cleanup;
> >>>>>          cln->data = r;
> >>>>>          conf->is_finish_inited = 1;
> >>>>>     }
> >>>>> ----------
> >>>>
> >>>> Флаг должен быть не в конфигурации, а в конексте самого запроса.
> >>>> Использование контекста можно посмотреть, например, в charset, gzip, 
> >>>> userid:
> >>>>     ngx_http_get_module_ctx();
> >>>>     ngx_http_set_ctx();
> >>>>
> >>>>> И ещё вопрос - у cleanup процедуры есть какие-либо обязательства? Т.е.
> >>>>> там нужно вызывать цепочку дальше, или нет? Если нужно, то где взять
> >>>>> статус завершения, для вызова ngx_http_finalize_request?
> >>>>
> >>>> Нет, никаких обязательств нет, только return.
> >>
> >>
> >> Игорь Сысоев
> >> http://sysoev.ru
> >>
> >>
> >
> >
> >
>
> Игорь Сысоев
> http://sysoev.ru
>
>


 




Copyright © Lexa Software, 1996-2009.