El 25/06/2009 a las 04:30:17AM -0300, Pablo Quiroga escribió:
> Hola Lista,
> 
> Resulta que estoy necesitando subir archivos por http post a un
> server, con un maximo de 200mb y con un monitor de progreso. Las
> soluciones van desde ajax (con peticiones a un php que devuelve lo
> subido hasta el momento) con iframe y un script cgi en perl que se
> encarga del upload y uploaders flash que se encargan de enviar los
> archivos a scripts en php. Claro que flash si puede monitorear el
> progreso, pero tiene el limite de tamaño definido por el php.ini, que
> en algunos shared hostings no se puede cambiar (he ahi un problema) y
> un limite propio de 100mb segun estuve leyendo por la interné.

El que recibe las peticiones es Apache, y podría estar limitado el
tamaño de subida con LimitRequestBody:
http://httpd.apache.org/docs/2.0/mod/core.html#limitrequestbody
 
> Investigue un monton, busque scripts pero lentamente estoy llegando a
> un callejon sin salida. Vamos por partes:
> 
> a) Quiero evitar flash a toda costa.
> 
> b) El monitor de progreso es indispensable.
> 
> c) El script en perl tiene el problema de ser lento (al menos el que
> estuve probando). No tiene limites para el upload dado que no le da
> bola al limite fijado en el php.ini por razones obvias :P Un archivo
> de unos 1.9mb demora mas de 1min localmente, mientras que en php dura
> muchisimo -pero muchisimo- menos.

Perl en sí no es lento, es lenta la interpretación/compilación del script,
luego va bastante rápido. Para evitar esta demora es que existe mod_perl:
http://perl.apache.org/
 
> Seguramente deben haber algunas soluciones por ahi que no se me han
> ocurrido. Alguien me podria tirar alguna idea?

http://search.cpan.org/~lgoddard/CGI-ProgressBar-0.04/ProgressBar.pm
http://search.cpan.org/dist/Apache2-UploadProgress/
http://www.perlmonks.org/?node_id=588964
 
> Gracias.
> 
> PD: Adjunto el script en perl que se encarga del upload.

Porqué no usas el módulo CGI (man CGI), te vas a ahorrar muchas líneas
de código y además tiene una opción UPLOAD_HOOK que te sirve para
hacer el indicador de progreso:

http://menno.b10m.net/blog/blosxom/perl/cgi-upload-hook.html

Slds
-- 
Horacio

Responder a