Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: itzg3 en 30 Abril 2014, 18:14 pm



Título: Automatizar descargas con loop
Publicado por: itzg3 en 30 Abril 2014, 18:14 pm
Tengo un script en php , que lo hice para descargar unos 5 archivos de cada uno con diferentes url el punto es que no he logrado hacer que al terminar una descarga siga el siguiente archivo y asi hasta terminar todo.

Código
  1. foreach($out[1] as $url){
  2.  
  3. $url=str_ireplace(" ", "%20", $url);
  4. $cleanName = basename($url);
  5. echo $url."<br>";
  6. echo $cleanName;
  7. @@header('Content-Disposition: attachment; filename="'.$cleanName.'"');
  8. @readfile($url);
  9. die($url); /* aquí me quedo, estoy en duda de como controlar la descarga .Cuando acabe de descargar un archivo pasar al siguiente. */
  10. sleep(10);
  11. }
  12.  

Lo que   logro con esto es descargar solo 1 archivo y ahi queda todo.


Título: Re: Automatizar descargas con loop
Publicado por: ~ Yoya ~ en 1 Mayo 2014, 04:50 am
Bro, no puedes usar die() y no entiendo porque se te ocurrió usar die(). die() finaliza la ejecución del script completo.

Y para lo que quieres hacer no te va a funcionar de esa manera, siempre va a descargar un solo. Porque el script se queda ejecutando y el navegador se queda en espera que el script termine su ejecución, y cuando el script termina de ejecutarse el navegador termina de descargar el primer archivo. Y como termino de ejecutarse, entonce hay finaliza el proceso por completo.

Si quieres hacer algo similar, entonce se me ocurre que uses iframe.

Saludos.


Título: Re: Automatizar descargas con loop
Publicado por: JorgeEMX en 2 Mayo 2014, 02:47 am
No puedes hacer eso, por el hecho que interrumpes el ciclo a mandar a descargar el archivo.

Si estás dentro de una app web, podrías auxiliarte de javascript (y AJAX por ejemplo) y hacer el ciclo ahí. Si es un script PHP podrías ocupar el comando wget..

Saludos