2010-12-11 23 views
0

J'ai besoin de quelques suggestions sur la façon de récupérer des fichiers générés dynamiquement via des tâches s'exécutant sur mon serveur de travaux distant vers mon serveur frontal exécutant un panneau d'utilisateur pour gérer les tâches.Récupération du fichier du Job Server vers mon serveur frontal

Je ne souhaite pas que l'adresse IP de mon serveur de travaux soit affichée, ce qui permet de télécharger directement à partir du Job Server.

J'ai également besoin d'une bibliothèque Jquery pour afficher la vitesse de téléchargement, une barre de progression quelconque.

Répondre

1

Je pense qu'il serait utile de connaître les réponses à quelques questions.

Du haut de ma tête:

  • Quelle est la taille des fichiers peut être?
  • Combien de temps faut-il pour télécharger un fichier?
  • De quel format sont les fichiers?
  • Les fichiers que vous récupérez sur le Job Server sont-ils statiques? (Ou, ils sont en cours de régénération à chaque fois?)

Edit:

jQuery UI a une progress bar. (docs)

À partir de votre panneau d'utilisateur que vous auriez un lien comme celui-ci:

<a href="remoteTxtFile.php?file_id=100">File 100</a> 

Ce lien devrait commencer une demande jQuery.getJSON() à remoteTxtFile.php sur votre serveur frontend qui:

  • chèques à voir si le fichier demandé a déjà été téléchargé.
  • Si elle a, retourner un objet JSON comme ceci: { « emplacement »: « /cache/file_100.txt »}
    • Le rappel de succès Ajax peut alors afficher un lien vers le fichier.
  • Sinon, commencer à télécharger le fichier en utilisant quelque chose (idées plus bas) qui peut progresser de sortie dans un fichier texte. Enregistrez le fichier dans un dossier "cache". Renvoyez un objet JSON comme ceci: {'progress': 0}
  • Périodiquement (toutes les secondes) lancez un autre getJSON() dans un script PHP qui lit le fichier txt de progression du téléchargement et retourne un objet JSON comme ceci: progrès ': 52} (pour cent)
  • Lorsque le téléchargement est terminé, du retour de PHP JSON comme ceci: {' emplacement ': '/cache/file_100.txt'}
    • Lorsque le rappel de succès Ajax voit "emplacement", le fichier est fait, alors montrez un lien vers celui-ci.

Je ne suis pas sûr de ce que vous devez utiliser pour le téléchargement réel de fichiers. Le problème avec l'utilisation de PHP et stream_notification_callback pour faire le téléchargement (et la progression de la sortie) est que le fichier entier serait téléchargé en mémoire, ce qui n'est pas bon pour un fichier de 1 Go.Peut-être que l'utilisation de wget pour faire le téléchargement proprement dit fonctionnerait mieux.

+0

Les fichiers peuvent aller de 1mb à 1000mb. jobserver est sur 100Mbps donc la vitesse de téléchargement est rapide, frontend aussi bien. fichiers txt. les fichiers sont régénérés respectivement dans des répertoires numérotés avec le même nom de fichier comme example.txt – KJW