首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP file_get_contents 讀取大型檔案分段處理技巧

     編輯:PHP 相關知識

PHP file_get_contents 讀取大型檔案分段處理技巧

當遇到超大文字檔案(數十 MB 甚至數 GB)時,一般編輯器會因記憶體不足而無法開啟。PHP 的 file_get_contents() 支援位移與長度參數,可實現分段讀取,避免一次性載入全部內容導致記憶體溢出。

函數語法

string file_get_contents(
    string $filename,
    bool $use_include_path = false,
    resource $context = null,
    int $offset = 0,
    int $maxlen = ?
)

參數說明:

  • offset:開始讀取的位元組位移
  • maxlen:最大讀取長度(位元組)

分段讀取範例

<?php
// 從 1MB 處開始讀取 1MB 內容
$str = file_get_contents("2.sql", false, null, 1024*1024, 1024*1024);
echo $str;
?>

替代方案:fread 迴圈讀取

對於需完整處理大檔案的情況,使用 fread() 搭配迴圈更適合:

<?php
$fp = fopen('2.sql', 'r');
$filesize = filesize('2.sql');
$chunk = $filesize / 10; // 每次讀取 1/10

while (!feof($fp)) {
    $str = fread($fp, $chunk);
    // 處理 $str 內容...
}
fclose($fp);
?>

效能建議

  • file_get_contents() 內部使用記憶體映射(mmap),效能優於 fread()
  • 處理超大檔案時,建議搭配 fseek() 定位與 ftell() 追蹤位置
  • 記得設定 ini_set('memory_limit', '512M'); 避免記憶體限制

原文來源:111cn.net

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved