загрузка файла с сервера заданий на мой интерфейсный сервер - PullRequest
0 голосов
/ 11 декабря 2010

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

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

Мне также понадобится некоторая библиотека Jquery для отображения скорости загрузки, какой-то индикатор выполнения.

1 Ответ

1 голос
/ 11 декабря 2010

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

От макушки головы:

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

Редактировать:

jQuery UI имеет индикатор выполнения . (docs)

С вашей пользовательской панели у вас будет такая ссылка:

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

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

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

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

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

...