Téléchargement grand nombre d'images à mon serveur et d'informer l'utilisateur Une fois le téléchargement terminé
-
18-09-2019 - |
Question
Je veux télécharger une grande quantité de fichiers sur mon serveur. J'ai une liste des différents fichiers à télécharger et les endroits où les mettre. Tout cela n'est pas un problème, j'utilise wget pour télécharger le fichier, exécutez ce avec shell_exec
$command = 'wget -b -O' . $filenameandpathtoput . ' ' . $submission['url'];
shell_exec($command);
Cela fonctionne très bien, le serveur démarre tous les fils et les fichiers sont téléchargés en peu de temps.
Le problème est, je veux avertir l'utilisateur lorsque les fichiers sont téléchargés ... Et cela ne fonctionne pas avec ma façon actuelle de faire les choses. Alors, comment voulez-vous mettre en œuvre cette?
Toutes les suggestions seraient utiles!
La solution
Je suppose que vous êtes en mesure de vérifier si tous les fichiers sont en place avec quelque chose comme
function checkFiles ()
{
foreach ($_SESSION["targetpaths"] as $p)
{
if (!is_file($p)) return false;
}
return true;
}
Maintenant, tout ce que vous avez à faire est d'appeler un script sur votre serveur qui appelle cette fonction à chaque seconde (ou presque). Vous pouvez accomplir ceci avec Meta Refresh (forcer le navigateur à recharger la page après n secondes) ou en utilisant AJAX (jetez un oeil à la .getJSON
jQuery, par exemple).
Si le script est appelé et les fichiers ne sont pas encore tous les documents téléchargés, imprimer quelque chose comme « S'il vous plaît attendre » et se rafraîchir à nouveau plus tard. Dans le cas contraire, affiche le message de réussite. C'est tout.
Autres conseils
Vous pouvez envisager d'utiliser exec pour exécuter la commande wget externe . Votre script PHP va bloquer jusqu'à ce que la commande se termine externes. Une fois terminé, vous pouvez l'écho le nom du dossier complet.