Я думаю, это помогло бы узнать ответы на несколько вопросов.
От макушки головы:
- Насколько большими могут быть файлы?
- Сколько времени может занять загрузка файла?
- В каком формате файлы?
- Являются ли файлы, которые вы загружаете с сервера заданий, статичными?(или они регенерируются каждый раз?)
Редактировать:
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 для фактической загрузки будет работать лучше.