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

Igor Sysoev is at rambler-co.ru
Fri Apr 21 11:30:14 MSD 2006


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 at rambler-co.ru> 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





More information about the nginx-ru mailing list