首頁 > 後端開發 > php教程 > 如何在 PHP 中串流大檔案而不將它們完全載入到記憶體中?

如何在 PHP 中串流大檔案而不將它們完全載入到記憶體中?

Barbara Streisand
發布: 2024-12-19 22:38:15
原創
454 人瀏覽過

How Can I Stream Large Files in PHP Without Loading Them Entirely into Memory?

在PHP 中流式處理大檔案

PHP 內建的file_get_contents 函數是將檔案讀入字串的便捷方法,但它有一個重要的限制:它一次將整個文件載入到記憶體中。對於大檔案來說,這可能會出現問題,因為它可能會耗盡 PHP 記憶體限制並導致腳本失敗。

幸運的是,有一些方法可以將大檔案串流傳輸給用戶,而無需將其全部載入記憶體。一種技術涉及使用 readfile_chunked 函數。此函數以檔案名稱作為參數,並將檔案內容以指定大小的區塊形式傳送至輸出緩衝區。

以下是如何使用 readfile_chunked 函數的範例:

在此範例中,我們定義 CHUNK_SIZE 常數來指定每個區塊的大小(以位元組為單位)。然後 readfile_chunked 函數分塊讀取檔案並將它們傳送到輸出緩衝區。呼叫 ob_flush 和 flash 函數以確保區塊在生成時傳送到客戶端。

此技術可讓您將大檔案串流傳輸給用戶,而無需將整個檔案載入記憶體。這是透過 HTTP 連線傳送大檔案的有效方法。

以上是如何在 PHP 中串流大檔案而不將它們完全載入到記憶體中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板