Скрепка для бумаги, загрузка больших файлов и AWS
-
13-09-2019 - |
Вопрос
Итак, я использую 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