2013-08-26 62 views
3

我在Heroku上的NGINX(自定義buildpack)上使用PHP 5.4.12。上傳1.5MB或更大尺寸的圖片時遇到問題。這是我在做什麼:Heroku上傳和腳本執行限制

  • PHP上傳來的Heroku(使用Iframe和阿賈克斯)

  • 裁剪,調整大小和麪具的照片在Heroku

    (使用Imagick命令行,convertcomposite
  • 將編輯後的圖像移動到另一臺服務器上(因爲Heroku不會讓你長期存儲東西,除非它們被推到服務器上)。現在我正在使用我的測試環境/服務器,但我相信我最終會將其轉移到S3上。

任何小文件都可以通過。任何比megs更大的東西只會在上傳時間(看起來像)上掛起。相同的確切腳本在另一臺服務器上工作得很好。

我在Heroku上修改了php.ini文件,重新編譯了slu,,重新啓動並重置了dynos。 phpinfo()調用顯示增加的上傳限制,但腳本仍然以相同的方式失敗。

我知道Heroku應該有一個30秒的腳本執行限制,但是,我看到它的方式,PHP上傳發生在腳本開始執行之前。

我最初試圖從不同的服務器執行上傳腳本,但是,由於我向上傳腳本發出Ajax請求,因此遇到了CORS(跨源資源共享)限制,而且我沒有像CORS的解決方法,因爲一些瀏覽器不服從。

任何想法,我可以允許用戶上傳大於1.5MB的圖像,在圖像上運行我的裁剪/遮罩腳本,然後將圖像存儲在某處(例如Amazon S3)?也許有人知道一種方式直接上傳到亞馬遜,編輯EC2上的圖像,然後轉移到S3? 謝謝!

PS,尋找一個無Flash解決方案,因爲我試圖移動友好。

+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