2010-12-11 1 views
0

Мне нужны некоторые предложения о том, как извлекать динамически сгенерированные файлы с помощью заданий, выполняемых на удаленном сервере заданий, на моем внешнем сервере, который запускает панель пользователя для управления заданиями.выборка файла с сервера задания на мой внешний сервер

Я не хочу, чтобы IP-адрес моего рабочего сервера был открыт, поэтому пользователю напрямую загружать с сервера задания нежелательно.

Мне также нужна библиотека JQuery, чтобы показать скорость загрузки, индикатор выполнения.

ответ

1

Я думаю, что это помогло бы узнать ответы на несколько вопросов.

Off верхней части моей головы:

  • Насколько велика может быть файлы?
  • Как долго вы можете загрузить файл?
  • В каком формате находятся файлы?
  • Являются ли файлы, которые вы извлекаете из статического сервера задания? (Или, они возрождаются каждый раз?)

Edit:

JQuery UI имеет progress bar. (docs)

С вашей пользовательской панели вы бы ссылка, как это:

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

Этой ссылка должен начать jQuery.getJSON() запрос remoteTxtFile.php на вашем внешний интерфейс сервере, который:

  • Чеков проверьте, был ли запрошенный файл уже загружен.
  • Если есть, возвращает объект JSON как это: { «место»: «/cache/file_100.txt»}
    • Успех обратного вызова Ajax, то может показать ссылку на файл.
  • Если нет, то начать загрузку файла с помощью что-то (идеи дальше вниз), который может выводить прогресс в текстовый файл. Сохраните файл в папку «cache». Верните объект JSON следующим образом: {'progress': 0}
  • Периодически (каждую секунду или около того) запускайте еще один getJSON() в PHP-скрипт, который читает файл TCC процесса загрузки и возвращает объект JSON следующим образом: {' прогресс ': 52} (процент)
  • Когда загрузка будет завершена, из PHP возвращения JSON как это: {' место ': '/cache/file_100.txt'}
    • Когда успех обратного вызова Ajax видит «местоположение», файл сделан, поэтому покажите ссылку на него.

Я не уверен, что вы должны использовать для фактической загрузки файлов. Проблема с использованием PHP и stream_notification_callback для выполнения загрузки (и вывода) заключается в том, что весь файл будет загружен в память, что не подходит для файла размером 1 ГБ.

Возможно, использование wget для фактической загрузки будет работать лучше.

+0

файлы могут варьироваться от 1mb до 1000mb. jobserver находится на скорости 100 Мбит/с, поэтому скорость загрузки быстро, интерфейс тоже. txt. файлы регенерируются соответственно в нумерованные каталоги со всем одинаковым именем файла, например example.txt – KJW

Смежные вопросы