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

Denis Erygin erygin at corp.mail.ru
Sun Aug 5 16:57:04 MSD 2007


>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