Perl докачка и т.д.

Igor Sysoev is at rambler-co.ru
Sat Oct 28 19:59:24 MSD 2006


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





More information about the nginx-ru mailing list