Re: Реализация непрыровной отдачи в модуле-handler

Denis Erygin erygin at corp.mail.ru
Mon Aug 6 15:36:19 MSD 2007


Any comments?

----- Original Message ----- 
From: "Denis Erygin" <erygin at corp.mail.ru>
To: <nginx-ru at sysoev.ru>
Sent: Sunday, August 05, 2007 4:57 PM
Subject: Re: Реализация непрыровной отдачи в модуле-handler


> >nginx считает, что запрос отработан после того, как вызвана
>>ngx_http_finalize_request().
>
> Ниже приведенный код цикла падает на вызове ngx_http_finalize_request,
> как все-же правильно организовать непрерывную отдачу без буферизации?
>
> static ngx_int_t ngx_http_my_handler ( ngx_http_request_t* r )
> {
>    ngx_int_t   rc;
>    ngx_chain_t out;
>    int i;
>    .....
>
>    for ( i = 0; i < 10; i++ )
>   {
>         .....
>         out.buf  = b;
>         out.next = NULL;
>
>        // попытка отправить в сокет out.buf
>        ngx_http_output_filter(r, &out);
>        ngx_http_finalize_request(r, NGX_DONE);
>   }
>
>    return NGX_OK;
> }
>
> Как я понимаю, надо реорганизовать такой цикл, чтобы отправка
> каждого буфера приводила к выходу из ngx_int_t ngx_http_my_handler(...),
> с последующим возвращением в него за следующим буфером,
> но организовать такое через NGX_AGAIN не получилось.
>
> ----- Original Message ----- 
> From: "Igor Sysoev" <is at rambler-co.ru>
> To: <nginx-ru at sysoev.ru>
> Sent: Thursday, July 19, 2007 12:23 PM
> Subject: Re: Реализация непрыровной отдачи в модуле-handler
>
>
> On Wed, Jul 18, 2007 at 11:10:04PM +0400, Denis Erygin wrote:
>
>> Про организацию непрерывной отдачи не нашел в ответе ....
>
> nginx считает, что запрос отработан после того, как вызвана
> ngx_http_finalize_request().
>
>> Насчет keep-alive понятно.
>>
>> ----- Original Message ----- 
>> From: "Igor Sysoev" <is at rambler-co.ru>
>> To: <nginx-ru at sysoev.ru>
>> Sent: Wednesday, July 18, 2007 9:59 PM
>> Subject: Re: Реализация непрыровной отдачи в модуле-handler
>>
>>
>> On Wed, Jul 18, 2007 at 09:22:11PM +0400, Denis Erygin wrote:
>>
>> >Допустим, что в функции ngx_http_*_handler(...) непрерывно строится
>> >цепочка буферов (chains),
>> >вопрос в том, как ее отдавать браузеру по частям (например цепочки по 10
>> >буферов) ?
>> >
>> >В этом случае нужно принудительно выставить "Connection: keep-alive"
>> >(как?),
>> >и сделать запись в сокет.
>>
>> r->keepalive = 1
>>
>> но "Connection: keep-alive" для непрерывной отдачи по частям не нужен.
>>
>>
>> -- 
>> Игорь Сысоев
>> http://sysoev.ru
>>
>>
>
> -- 
> Игорь Сысоев
> http://sysoev.ru
>
> 






More information about the nginx-ru mailing list