Foros del Web » Programando para Internet » PHP »

Descarga de archivos grandes con CURL

Estas en el tema de Descarga de archivos grandes con CURL en el foro de PHP en Foros del Web. Hola a todos,tengo una duda Estoy realizando una pagina web que realiza descarga de archivos pdf de un servidor externo(no es nada ilegal,esos archivos estan ...
  #1 (permalink)  
Antiguo 18/07/2009, 13:59
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años, 5 meses
Puntos: 2
Descarga de archivos grandes con CURL

Hola a todos,tengo una duda
Estoy realizando una pagina web que realiza descarga de archivos pdf de un servidor externo(no es nada ilegal,esos archivos estan disponibles ,solo q quiero automatizar el proceso),actualmente estoy usando PHP y las librerias CURL para realizar eso,pero ahora mi pregunta es:
Existen archivos que pesan mas de 100 Mb, y dado que estoy usando PHP, es posible que mi servidor web me corte el tiempo de espera y la descarga del archivo no se realize?
Cual es la mejor manera de realizar estas descargas para q los archivos esten completos y sin errores?
talvez poniendo codigo php en un archivo perl?
alguna idea?
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #2 (permalink)  
Antiguo 18/07/2009, 14:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Descarga de archivos grandes con CURL

y si rediriges al enlace directamente??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/07/2009, 15:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Descarga de archivos grandes con CURL

Exacto, si los PDF son publicos, simplemente redirige asi le quitas la tarea a tu servidor y no lo bloqueas sin necesidad.

Saludos.
  #4 (permalink)  
Antiguo 18/07/2009, 16:00
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: Descarga de archivos grandes con CURL

redirigirlos? no les entiendo muy bien
Pero la cuestion es q tengo q descargas esos archivos a mi servidor para que luego extraiga el texto de pdf(ya vere luego como hacer eso) y lo guarde en una base de datos,es por eso q necesito guardar el archivo pdf a mi servidor
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #5 (permalink)  
Antiguo 19/07/2009, 20:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Descarga de archivos grandes con CURL

En ese caso es transfrencia a tu servidor, en cuyo caso es el mismo, ya que si no puedes obtener de alguna forma como esta el archivo en el servidor remoto no puedes comprobarlo, lo común es que te brinden un Hash MD5 del archivo con eso compruebas que es correcto, de otra forma es imposible.

Saludos.
  #6 (permalink)  
Antiguo 20/07/2009, 00:24
 
Fecha de Ingreso: julio-2009
Mensajes: 15
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Descarga de archivos grandes con CURL

Disculpa que me salga un poco del tema.
Podría poner tu codigo para bajar los archivos pdf con curl a tu servidor?
Estoy buscando hacer algo similar pero con imagenes y no se bien como hacerlo...
  #7 (permalink)  
Antiguo 20/07/2009, 10:03
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: Descarga de archivos grandes con CURL

Código PHP:
$file=fopen("./tmp/pdfs/file.pdf","a");        
      
$curl curl_init();
curl_setopt($curlCURLOPT_URL,'ftp://tuservidorftpf/miarchivopdf.pdf');
curl_setopt($curl,CURLOPT_USERPWD,"usuario:password");//logearse en el ftp
curl_setopt($curl,CURLOPT_FILE,$file);
curl_exec($curl); 
curl_close($curl);
fclose($file);  
?> 
ese es mi codigo

Otra duda q tengo es
Ya q el archivo es demasiado grande, y si ajecuto este script; el servidor web de mi hosting me dara "supero tiempo de espera" o algo asi, entonces cual es la manera conveniente de descargar ficheros grandes?
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #8 (permalink)  
Antiguo 20/07/2009, 10:19
 
Fecha de Ingreso: julio-2009
Mensajes: 118
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Descarga de archivos grandes con CURL

puedes intentar poniendo al principio: set_time_limit(0); o sino con wget:

system('wget http://host.com/archivo.pdf');
  #9 (permalink)  
Antiguo 20/07/2009, 10:20
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: Descarga de archivos grandes con CURL

q es wget? un programa para linux?
Estaba pensando pasar el codigo a un script perl en el q este embebido codigo php,creen q asi se pueda y no me de "tiempo de espera superado" el servidor?
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #10 (permalink)  
Antiguo 20/07/2009, 10:34
 
Fecha de Ingreso: julio-2009
Mensajes: 118
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Descarga de archivos grandes con CURL

http://es.wikipedia.org/wiki/GNU_Wget

para lo del tiempo de espera usa set_time_limit(0); así:


<?php
set_time_limit(0);
$file=fopen("./tmp/pdfs/file.pdf","a");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,'ftp://tuservidorftpf/miarchivopdf.pdf');
curl_setopt($curl,CURLOPT_USERPWD,"usuario:passwor d");//logearse en el ftp
curl_setopt($curl,CURLOPT_FILE,$file);
curl_exec($curl);
curl_close($curl);
fclose($file);
?>
  #11 (permalink)  
Antiguo 20/07/2009, 15:24
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: Descarga de archivos grandes con CURL

entonces con eso ya no tendre problemas con el servidor web? o tambien necesito cambiar algun flag del httpd.conf?
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #12 (permalink)  
Antiguo 07/08/2009, 07:37
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: Descarga de archivos grandes con CURL

Bueno,ya pude hacer la descarga de un archivo grande(mas o menos 100 Mb) en mi PC local,pero cuando ejecuto la aplicacion en el servidor,no funciona,a q se debe?
Ese es el script q hace la descarga:
Código PHP:
$file=@fopen("miarchivo.pdf","a");        
$server_ftp="ftp://ftp.servidorexterno.com/archivopdfexterno.pdf";
$curl curl_init();
    
curl_setopt($curlCURLOPT_URL,$server_ftp);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,0);
curl_setopt($curl,CURLOPT_FILE,$file);
curl_exec($curl); 
curl_close($curl);
fclose($file); 
En mi servidor se crea el archivo miarchivo.pdf pero con tamaño 0,osea llega hasta ese punto pero no hace la descarga,a q se debe? como lo soluciono?


La direccion ftp://ftp.servidorexterno.com/archivopdfexterno.pdf es una web externa y ajena a la mia,pero no necesita password para hacer la descarga

AYuda porfavor
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
  #13 (permalink)  
Antiguo 08/08/2009, 07:31
Avatar de Farookh_Bulsara  
Fecha de Ingreso: mayo-2004
Mensajes: 1.185
Antigüedad: 20 años, 5 meses
Puntos: 2
Respuesta: Descarga de archivos grandes con CURL

Modifique algo del codigo:
Código PHP:

set_time_limit
(0);
$file=@fopen("miarchivo.pdf","a");        
$server="ftp://ftp.servidorexterno.com/archivopdfexterno.pdf"

$curl curl_init();
curl_setopt($curlCURLOPT_URL,$server);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,0);
curl_setopt($curl,CURLOPT_TIMEOUT,120);
curl_setopt($curl,CURLOPT_FTPASCII,true);
curl_setopt($curl,CURLOPT_USERPWD,"anonymous:anonymous");//logearse en el ftp si es necesario,para nuestro caso,no
curl_setopt($curl,CURLOPT_FILE,$file);
curl_exec($curl); 
curl_close($curl);
fclose($file); 
No se porq no descarga archivos grandes, hice la prueba descargando archivos pequeño(de 5 a 6 Mb) y descarga en un segundo,pero los grandes,no;talvez me falta establecer alguna configuracion del curl?
__________________
"Todas las cosas deben mostrarse primero con mascaras tetricas y terrorificas para que puedan inscribirse a si mismas en el corazon de la humanidad"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:55.