如何在LAMP 堆疊上動態串流Zip 檔案
挑戰
挑戰挑戰
。 Web 服務中動態的大型檔案可能會導致效能問題和資源限制。傳統方法涉及建立臨時 zip 文件,導致 CPU、磁碟和記憶體開銷。
使用 popen() 和lush() 的串流解決方案可以避免這些缺點,並考慮將 zip 檔案建立直接串流傳輸給使用者。這可以使用 popen() 或 proc_open() 執行流程管道命令(例如 zip)來實現。將其與flush()結合起來可以在建立zip檔案時實現高效的串流。修訂範例
這裡是一個更新的程式碼範例,解決了提出的一些警告@Benji 在評論中:
注意:雖然最初建議使用flush(),但建議避免在大檔案或慢速網路的循環中使用它。這可能會導致緩衝區溢位問題。
其他注意事項對於多處理器伺服器,請考慮將nodeJS 與http 和child_process 模組一起使用,以實現高效、非阻塞的I /O. 在這種情況下不可能設定Content-Length 標頭,因為zip 檔案大小事先未知。但是,請考慮調查是否存在指示串流或未知內容長度的標頭。以上是如何在 LAMP 堆疊上動態串流 Zip 檔案而不建立臨時檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!