我正在嘗試將網站轉換為使用 S3 存盤而不是本地(昂貴的)磁盤存盤。我使用 S3Client 上的流包裝器介面解決了下載問題。上傳問題更難。
在我看來,當我發布到 PHP 端點時,$_FILES 物件已經填充并復制到 /tmp/ 之前,我什至可以攔截它!
最重要的是,S3Client->upload() 期望磁盤上已經有一個檔案!
似乎對我正在嘗試做的事情是雙重打擊,我發現的大多數建議都使用 NodeJS 或 Java 流,所以我不知道如何翻譯。
如果我能攔截填充 $_FILES 的代碼,然后使用 S3\ObjectUploader 從記憶體中發送 5MB 塊會更好,但是你如何破解 PHP 多部分處理程式?
想法?
編輯:它的檔案數量非常少,每天 0-20 個,大部分為 1-5MB,有時達到 40-70MB。將定期(每隔幾周)上傳 1-2GB 的檔案。因此,希望從 EC2 實體遷移到 heroku/beanstalk 型別的 PaaS,在那里我不會有太多 /tmp/ 空間。
uj5u.com熱心網友回復:
在不知道應用程式的性能要求和訪問它所需的用戶數量的情況下,很難對您的具體情況發表評論,因此我將嘗試假設一個基本的 Web 應用程式上傳個人資料頭像來回答。
這有一些很好的理由,檔案被流式傳輸到磁盤有多種用途,其中之一是節省記憶體使用。如果您的檔案不在磁盤上而不是在記憶體中(認為磁盤使用量昂貴?提高您的記憶體使用量,看看它有多昂貴),這對于上傳小檔案的單個用戶來說很好,但對于上傳小檔案來說不是那么好一群用戶上傳小檔案或更糟:大檔案。如果您在這些庫上使用默認值并讓它們流入和流出磁盤,您可能會看到最佳性能。
但同樣,我不知道您的用例,您實際上可能需要出于某種未知原因不惜一切代價避免使用磁盤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/387987.html
