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