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

ForJest forjest at gmail.com
Tue Apr 18 10:28:37 MSD 2006


Спасибо, работает.

Единственно что - я не придумал ничего лучше чем вставить регистрацию
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;
     }
----------
И ещё вопрос - у cleanup процедуры есть какие-либо обязательства? Т.е.
там нужно вызывать цепочку дальше, или нет? Если нужно, то где взять
статус завершения, для вызова ngx_http_finalize_request?

On 4/17/06, Igor Sysoev <is at rambler-co.ru> wrote:
> On Mon, 17 Apr 2006, ForJest wrote:
>
> > Я почти дописал модуль, для сбора статистики. У меня возник вопрос -
> > как отследить в модуле завершение обработки запроса?
> > Отсылку headers понятно, части отсылки тела ответа - тоже. А вот как
> > отследить завершение? Или цепочка будет вызвана и в случае
> > преждевременного завершения запроса тоже?
>
> Нужно зарегистировать cleanup процедуру:
>
>     cln = ngx_http_cleanup_add(r, 0);
>     if (cln == NULL) {
>        ...
>     }
>
>     cln->handler = ngx_http_module_cleanup;
>     cln->data = r;
>
> на примере ngx_http_upstream.c. Эта процедура вызвается по окончании
> обработки запроса.
>
>
> Игорь Сысоев
> http://sysoev.ru
>
>


More information about the nginx-ru mailing list