ПРОЕКТЫ 


  АРХИВ 


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: Сбор статистики о файле



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



 




Copyright © Lexa Software, 1996-2009.