Il download gran numero di immagini al mio server e notificare l'utente quando download è finito
-
18-09-2019 - |
Domanda
Vorrei scaricare una grande quantità di file al mio server. Ho una lista di diversi file da scaricare e posizioni dove metterli. Tutto questo non è un problema, io uso wget per scaricare il file, eseguire questo con shell_exec
$command = 'wget -b -O' . $filenameandpathtoput . ' ' . $submission['url'];
shell_exec($command);
Questa grande opera, il server avvia tutti i fili ei file sono scaricati in poco tempo.
Il problema è che, voglio informare l'utente quando i file vengono scaricati ... E questo non funziona con il mio modo attuale di fare le cose. Quindi, come si potrebbe implementare questa?
Ogni suggerimento sarà utile!
Soluzione
Credo che si è in grado di verificare se tutti i file sono in atto con qualcosa come
function checkFiles ()
{
foreach ($_SESSION["targetpaths"] as $p)
{
if (!is_file($p)) return false;
}
return true;
}
Ora tutto ciò che dovete fare è chiamare uno script sul server che chiama questa funzione ogni secondo (o giù di lì). È possibile raggiungere questo obiettivo con Meta Refresh (forzando il browser per ricaricare la pagina dopo n secondi) oppure utilizzando AJAX (dare un'occhiata a .getJSON
di jQuery, per esempio).
Se lo script si chiama ei file non sono ancora tutte scaricato, stampare qualcosa come "attendere" e aggiornare in un secondo momento. In caso contrario, il messaggio di successo. Questo è tutto.
Altri suggerimenti
È possibile considerare l'utilizzo di exec per eseguire il comando wget esterna . Lo script PHP bloccherà fino al completamento del comando esterni. Una volta completato si può eco il nome del file completato.