ПРОЕКТЫ 


  АРХИВ 


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: Отловить момент, когда за качка завершена



> > On Thu, 9 Feb 2006, AleXXX V. NovikoFF wrote:
> > 
> > >> Когда файл отдается целиком, post_action действительно вызывается, а
> > >> когда вот такое:
> > >>
> > >> 2006/02/09 08:21:30 [info] 2679#0: *2430 client timed out (110: 
> > >> Connection timed out) while sending response to client, client: 21
> > >> 2.220.204.71, server: mults.spb.ru, URL: "/mults/gribnoy_dozhdik.avi",
> > >> host:,0 "mults.spb.ru", referrer: http://mults.spb.ru/mults/";
> > >>
> > >> то до post_action дело не доходит, а надо бы... :(
> > >>
> > >
> > > Может попробовать вынести обработку post_action в функцию 
> > > ngx_http_close_request?
> > 
> > Нет, post_action нужно вызывать в ngx_http_finalize_request().
> 
> Там есть такие моменты, когда в ngx_http_finalize_request() мы никогда
> не попадем, среди них как раз connection timeout :( я заметил как
> минимум в 2 местах (искать по словам "client timed out")
> 
> > Для оборванных ответов вызов post_action можно поставить сюда:
> > 
> >      if (rc == NGX_ERROR || r->connection->error) {
> >          ngx_http_close_request(r, 0);
> >          return;
> >      }
> 
> испробовано, ноль реакции,
> пробовал также в ngx_http_writer() но в итоге тоже, реакции нет...
> 
> > 
> > Но нужно смотреть, возможно, при обработка проксированных и fastcgi
> > запросов будет не полной из-за r->connection->error.
> 
> у меня в общем-то этот post_action в выдаче статики участвует
> 
> > 

Вот в общем дебаговый лог:

.... тут качалось много....
2006/02/10 08:00:54 [debug] 20044#0: *15 post event 080D59FC
2006/02/10 08:00:54 [debug] 20044#0: *15 delete posted event 080D59FC
2006/02/10 08:00:54 [debug] 20044#0: *15 http upstream check client, write 
event:0, "/mult_ftp/mults/gribnoy_dozhdik.avi"
2006/02/10 08:01:53 [debug] 20044#0: *15 event timer del: 14: 1381380149
2006/02/10 08:01:53 [debug] 20044#0: *15 http writer handler: 
"/mult_ftp/mults/gribnoy_dozhdik.avi?1443422"
2006/02/10 08:01:53 [info] 20044#0: *15 client timed out (110: Connection timed 
out) while sending response to client, client: 212.220.204.71, server:
mults....
2006/02/10 08:01:53 [debug] 20044#0: *15 http close request
2006/02/10 08:01:53 [debug] 20044#0: *15 http log handler
2006/02/10 08:01:53 [debug] 20044#0: *15 malloc: 080AF6C0:4096
2006/02/10 08:01:53 [debug] 20044#0: *15 run cleanup: 080AF380, fd:15
2006/02/10 08:01:53 [debug] 20044#0: *15 free: 080EF908
2006/02/10 08:01:53 [debug] 20044#0: *15 free: 080AE6B8, unused: 108
2006/02/10 08:01:53 [debug] 20044#0: *15 free: 080AF6C0, unused: 3867
2006/02/10 08:01:53 [debug] 20044#0: *15 close http connection: 14
2006/02/10 08:01:53 [debug] 20044#0: *15 free: 080AE050
2006/02/10 08:01:53 [debug] 20044#0: *15 free: 080AE2B0
2006/02/10 08:01:53 [debug] 20044#0: *15 free: 080ADF48, unused: 68

Тут же и видно, что по таймауту в ngx_http_finalize_request() мы не
попадаем :( как быть?

-- 
AleXXX V. NovikoFF <alexxx@xxxxxxxxx>




 




Copyright © Lexa Software, 1996-2009.