Каков наилучший способ загрузки файлов в службу хранения?(Amazon S3 или EdgeCast) - PullRequest
1 голос
/ 16 декабря 2010

У нас есть веб-приложение, которое должно хранить загруженные изображения с помощью EdgeCast или Amazon S3. Для этого нам нужно сначала загрузить эти изображения в EdgeCast / S3. Есть несколько вариантов, о которых я могу подумать:

  1. Выполните повторную загрузку встроенного скручивания , которая загрузит изображение с использованием требуемого API EdgeCast / S3. Недостатком является то, что при одновременной загрузке нагрузка на сервер будет огромной.
  2. Очередь повторных загрузок . Я знаю, что это возможно, но я не знаю, как это сделать.
  3. Не беспокойтесь о повторной загрузке и загрузите напрямую в EdgeCast / S3 со стороны клиента.
  4. Монтирование FTP EdgeCast's / S3 в файловую систему, а затем просто скопируйте загруженные файлы, позволяя демону FTP делать все остальное.

Какое решение является лучшим, и есть ли другие? Я подозреваю, что это либо 1, либо 2.

Редактировать: Мое приложение на PHP

Ответы [ 4 ]

3 голосов
/ 16 декабря 2010

Не уверен насчет EdgeCast, но я знаю, что с Amazon S3 лучший способ сделать это - отправить файл напрямую на файловый сервер.См. http://doc.s3.amazonaws.com/proposals/post.html

. Делая это таким образом, вы предоставляете HTML-ФОРМУ с некоторыми полями, такими как идентификатор папки, имя файла, открытый ключ, метка времени и т. Д., Чтобы обеспечить ее безопасность и загружать только всервер.Сервер будет перенаправлять свой браузер, как только загрузка будет завершена с той страницы, которую они перенаправили на вас, может проверить строку запроса, чтобы выяснить, была ли загрузка успешной или нет, а затем записать FileID в вашу БД.

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

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

Хранилище EdgeCast поддерживает конфигурацию Rsync / sFTP для автоматической синхронизации содержимого с сервера хранилища.EdgeCast также поддерживает конфигурацию «обратный прокси-сервер» или «клиентское происхождение» для автоматической загрузки содержимого с другого веб-сервера в кэш.Вы можете использовать S3 в качестве этого места происхождения клиента или использовать собственную службу EdgeCast Cloud Storage или любой другой веб-сервер за пределами сети EdgeCast.

0 голосов
/ 17 декабря 2010

AWS предоставляет SDK для PHP , чтобы сделать это. Он даже поддерживает загрузку из нескольких частей, что является отличной новостью для разработчиков.

Следует отметить, что AWS SDK для PHP также выполняет логику повторных попыток и (если вы используете Multipart, что вам следует) может возобновить неудачные загрузки.

0 голосов
/ 16 декабря 2010

Я загружаю файлы во временный каталог, затем запускаю скрипт cron, который помещает файлы в AWS, чтобы конечный пользователь больше не занимал процесс загрузки.

...