ПРОЕКТЫ 


  АРХИВ 


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: Perl докачка и т.д.



On Fri, 27 Oct 2006, Konstantin Petrenko wrote:

Запутался совсем, необходимо написать модуль который бы отдавал файл и
делал инсерт в базу после того, как файл будет полностью отправлен. По
суте обычный счетчик. В конфиге написал:
 location /files {
   perl getfile::handler;
 }

 location /insert {
   internal;
   perl insfile::handler;
 }

В getfile.pm следующее:
...
 $r->allow_ranges;
 $r->send_http_header;
 $r->sendfile($fn);
 $r->internal_redirect("/insert?sid=$sid");
 return OK;
...

Проблема в том, что докачка не поддерживается

Для того, чтобы была докачка, у ответа должна быть длина:

$r->allow_ranges;
$r->header_out("Content-Length", -s $fn);
$r->send_http_header;
$r->sendfile($fn);

/insert вызывается
всякие раз когда запрос закончен, даже если файл не докачен полностью.

$r->sendfile и $r->internal_redirect начинают работать сразу после
того, как перл выполнил "return OK".

Пробовал вызывать /insert через post_action но не догадался как
передать нужный мне параметр.

Из перлого обработчика на данный момент нельзя поставить переменные nginx'а.


Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.