2013-08-26 4 views
3

Я использую PHP 5.4.12 в NGINX (custom buildpack) на Heroku. У меня возникают проблемы при загрузке изображений размером 1,5 МБ и более. Это то, что я делаю:Ограничения на выгрузку и кеширование Heroku

  • PHP Загрузить в Heroku (используя плавающие фреймы и Ajax)

  • кадрирование, изменение размера и маски фото (с помощью командной строки Imagick, convert и composite) на Heroku

  • Переместить отредактированное изображение на другой сервер (потому что Heroku не позволит вам хранить вещи на долгое время, если они не будут перенаправлены на сервер). Прямо сейчас я использую свою тестовую среду/сервер для этого, но я уверен, что в конечном итоге перейду на S3.

Любые небольшие файлы проходят через отлично. Все, что больше, чем пара мегабайт, просто зависает во время (как выглядит) времени загрузки. Тот же самый точный скрипт отлично работает на другом сервере.

Я изменил файл php.ini на Heroku, перекомпилировал слизню, перезапустил и сбросил динамики. Вызов phpinfo() показывает увеличенный предел загрузки, однако сценарий по-прежнему не работает таким же образом.

Я понимаю, что у Героку должен быть 30-секундный срок выполнения сценария, однако, как я его вижу, загрузка PHP происходит до начала выполнения скрипта.

Сначала я пытался выполнить сценарий загрузки с другого сервера, так как я делаю запрос Ajax сценарию загрузки, я сталкиваюсь с ограничениями на использование ресурсов CORS (cross origin sharing), и я не как обходные пути CORS, поскольку некоторые браузеры не подчиняются.

Любые идеи о том, как я могу позволить пользователям загружать изображение размером более 1,5 МБ, запустить сценарий рисования/маскирования на изображении, а затем сохранить изображение где-нибудь (например, Amazon S3)? Возможно, кто-то знает, как загрузить прямо в Amazon, отредактировать изображения на EC2, а затем перейти на S3? Спасибо!

PS, ищущий бесплатное решение, поскольку я стараюсь быть мобильным.

+0

Как редактировать 'php.ini'? Я загружаю на s3, но все равно получаю сообщение об ошибке. [см. мой аналогичный вопрос SO] (http://stackoverflow.com/questions/18796980/edit-php-ini-on-heroku). Благодарю. –

ответ

0

Ваши скрипты начинают выполнять до. Загрузка файла завершена. Внимательно прочитайте документацию Heroku по ограничениям и маршрутизации, и вы увидите, что время POST-объекта считывается вашим сценарием, а маршрутизаторы ограничивают это и ограничивают минимальную скорость, с которой вы можете читать.

Heroku рекомендует загружать большие файлы непосредственно к S3: https://devcenter.heroku.com/articles/s3#file-uploads

Смежные вопросы