ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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@xxxxxxxxxxxxx>
To: <nginx-ru@xxxxxxxxx>
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@xxxxxxxxxxxxx>
To: <nginx-ru@xxxxxxxxx>
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




 




Copyright © Lexa Software, 1996-2009.