【问题标题】:Heroku upload and script execution limitationsHeroku 上传和脚本执行限制
【发布时间】:2013-08-29 10:33:48
【问题描述】:

我在 Heroku 上的 NGINX(自定义构建包)上使用 PHP 5.4.12。上传 1.5MB 及更大尺寸的图像时遇到问题。这就是我正在做的:

  • PHP 上传到 Heroku(使用 iFrames 和 Ajax)

  • 在 Heroku 上裁剪、调整大小和遮罩照片(使用 Imagick 命令行,convertcomposite

  • 将编辑后的图像移动到另一台服务器(因为 Heroku 不会让您长期存储东西,除非它们被 git 推送到服务器)。现在我正在为此使用我的测试环境/服务器,但我确信我最终会将它移到 S3 上。

任何小文件都可以通过。任何大于几兆的东西都会在(看起来像)上传时间挂断。相同的脚本在不同的服务器上工作得很好。

我修改了 Heroku 上的 php.ini 文件,重新编译了 slug,重新启动并重置了测功机。一个 phpinfo() 调用显示了增加的上传限制,但是脚本仍然以同样的方式失败。

我知道 Heroku 应该有 30 秒的脚本执行限制,但是,在我看来,PHP 上传首先发生在脚本开始执行之前。

我最初试图从不同的服务器执行上传脚本,但是,由于我正在向上传脚本发出 Ajax 请求,我遇到了 CORS(跨源资源共享)限制,我不喜欢CORS 解决方法,因为某些浏览器不服从。

有什么想法可以让用户上传大于 1.5MB 的图像,在图像上运行我的裁剪/遮罩脚本,然后将图像存储在某个地方(例如 Amazon S3)?也许有人知道直接上传到亚马逊的方法,在 EC2 上编辑图像,然后转移到 S3? 谢谢!

PS,正在寻找无 Flash 的解决方案,因为我正在尝试对移动设备友好。

【问题讨论】:

标签: php file-upload heroku nginx amazon-s3


【解决方案1】:

您的脚本在文件上传完成之前开始执行。仔细阅读有关限制和路由的 Heroku 文档,您会发现 您的脚本 读取 POST 正文的时间,并且路由器限制了该时间并限制了您可以读取的最低速率。 p>

Heroku 建议将大文件直接上传到 S3:https://devcenter.heroku.com/articles/s3#file-uploads

【讨论】:

    猜你喜欢
    • 2013-02-20
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2012-08-25
    • 2012-07-01
    相关资源
    最近更新 更多