Скрепка, загрузка больших файлов и AWS - PullRequest
5 голосов
/ 12 августа 2009

Итак, я использую Paperclip и AWS-S3, что потрясающе. И это прекрасно работает. Только одна проблема: мне нужно загружать действительно большие файлы. Как в более чем 50 мегабайт. И вот, nginx умирает. Так что, очевидно, Paperclip сохраняет вещи на диск перед тем, как перейти на S3?

Я нашел эту действительно классную статью , но она, похоже, сначала идет на диск, а затем делает все остальное в фоновом режиме.

В идеале я мог бы загрузить файл в фоновом режиме ... У меня небольшой опыт работы с PHP, но пока с Rails ничего не было. Может ли кто-нибудь указать мне общее направление, даже?

Ответы [ 4 ]

6 голосов
/ 27 мая 2011

Вы можете полностью обойти сервер и загрузить непосредственно на S3, что предотвратит тайм-аут. То же самое происходит с Героку. Если вы используете Rails 3, ознакомьтесь с моими примерами проектов:

Пример проекта с использованием Rails 3, Flash и FancyUploader на основе MooTools для загрузки непосредственно в S3: https://github.com/iwasrobbed/Rails3-S3-Uploader-FancyUploader

Пример проекта с использованием Rails 3, Flash / Silverlight / GoogleGears / BrowserPlus и Pluquload на основе jQuery для загрузки непосредственно в S3: https://github.com/iwasrobbed/Rails3-S3-Uploader-Plupload

Кстати, вы можете выполнить постобработку с помощью Paperclip, используя что-то вроде этого поста (который написал Нико):

http://www.railstoolkit.com/posts/fancyupload-amazon-s3-uploader-with-paperclip

5 голосов
/ 12 августа 2009

Может быть, вам нужно увеличить время ожидания в конфигах ngix?

1 голос
/ 28 августа 2009

Вас может заинтересовать мой пост здесь:

http://www.railstoolkit.com/posts/fancyupload-amazon-s3-uploader-with-paperclip

Речь идет о загрузке нескольких файлов (с индикаторами выполнения, одновременно) непосредственно на S3 без попадания на сервер.

0 голосов
/ 19 декабря 2011

У меня была похожая проблема, но с использованием скрепки, пассажир и Apache.
Как и nginx, у apache есть директива Timeout в apache, которую я увеличил для решения своей проблемы.

Также есть интересная вещь, которую пассажир делает при загрузке больших файлов.
Все, что больше 8k, записывается в / tmp / passenger. и если у Apache нет Разрешения на запись там вы также получаете 500 ошибок.

Вот статья.
http://tinyw.in/fwVB

...