Question

J'ai besoin des suggestions sur la façon de récupérer des fichiers générés dynamiquement par des emplois en cours d'exécution sur mon serveur de travail à distance à mon serveur frontend l'exécution d'un panneau utilisateur pour gérer les travaux.

Je ne veux pas IP de mon serveur de travail pour être exposé de manière permettant à l'utilisateur de télécharger directement à partir du serveur de travail est indésirable.

Je voudrais aussi besoin d'une bibliothèque JQuery pour afficher la vitesse de téléchargement, une barre de progression de quelque sorte.

Était-ce utile?

La solution

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 est-il susceptible de prendre pour télécharger un fichier?
  • Quel est le format sont les fichiers?
  • Les fichiers dont vous récupérez de la statique du serveur d'emplois? (Ou, sont-ils régénérés à chaque fois?)

Edit:

jQuery UI a un barre de progression . (doc)

A partir de votre panneau d'utilisateur aurait un lien comme celui-ci:

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

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

  • Vérifie 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 de progression de sortie dans un fichier texte. Enregistrez le fichier dans un dossier « cache ». Retour un objet JSON comme ceci: { 'progrès': 0}
  • Périodiquement (toutes les secondes) tirer une autre getJSON () à un script PHP qui lit le fichier de progression de téléchargement txt 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, montre donc un lien.

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 le progrès de sortie) est qui serait téléchargé le fichier en mémoire, ce qui est pas bon pour un fichier de 1 Go.

Peut-être en utilisant wget pour faire le téléchargement réel fonctionnerait mieux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top