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