Вопрос

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

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

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

Это было полезно?

Решение

Может быть, нужно увеличить таймаут в конфигах nix?

Другие советы

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top