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

PHP 獲取文件最後一行內容的高效實現方法

     編輯:PHP 相關知識

在 PHP 開發中,讀取大型文件的最後一行是常見需求。若直接將整個文件載入記憶體會造成效能負擔,因此採用檔案指標移動的方式更為高效。本文介紹一種透過 fseek() 從檔案末尾向前逐字元讀取,直到遇到換行符為止的實作技巧。

核心程式碼範例

$rs = 'README.md';
$fp = fopen($rs, 'r');
fseek($fp, -1, SEEK_END);
$s = '';
while (($c = fgetc($fp)) !== false) {
    if ($c == "\n" && $s) break;
    $s = $c . $s;
    fseek($fp, -2, SEEK_CUR);
}
fclose($fp);
echo $s;
exit;

關鍵邏輯解析

  • fseek($fp, -1, SEEK_END):將指標移至檔案最後一個位元組(通常是換行符或內容尾端)。
  • fgetc($fp):逐個讀取字元,並自動將指標前移一位。
  • fseek($fp, -2, SEEK_CUR):讀取後需再後退兩位(一位為剛讀取的字元,一位為下一次讀取的起始位置),實現逆向掃描。
  • 當讀到 \n 且 $s 不為空時,表示已完整讀取最後一行,跳出迴圈。

適用場景與注意事項

此方法適合處理大型日誌、CSV 或純文字檔,避免 file() 或 file_get_contents() 造成記憶體溢位。需注意:若檔案以 Windows 風格換行(\r\n),判斷條件應調整為 $c == "\n" 仍可運作,因 \r 會被包含在 $s 中;若檔案無尾隨換行符,首次判斷 $s 為空不會中斷,能正確讀取最後一行。

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