Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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 (php) [Seleccionar]

foreach($out[1] as $url){

$url=str_ireplace(" ", "%20", $url);
$cleanName = basename($url);
echo $url."<br>";
echo $cleanName;
@@header('Content-Disposition: attachment; filename="'.$cleanName.'"');
ob_clean();
flush();
@readfile($url);
die($url); /* aquí me quedo, estoy en duda de como controlar la descarga .Cuando acabe de descargar un archivo pasar al siguiente. */
sleep(10);
}


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