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

PHP 讀取檔案八大方法效能與適用場景深度解析

     編輯:PHP 相關知識

PHP 讀取檔案八大方法效能與適用場景深度解析

PHP 提供多種讀取檔案的函式,各有優缺點。本文詳細比較 fread、fgets、fgetss、file、readfile、file_get_contents、fpassthru、parse_ini_file 八種方法的語法、行為差異與效能特徵,助你選出最適合的方案。

1. fread() —— 二進位安全、指定長度讀取

$handle = fopen("file.txt", "r");
$content = fread($handle, filesize("file.txt")); // 本地檔案可一次讀完
fclose($handle);

遠端/流檔案無法取得大小,需搭配 feof() 迴圈:

$handle = fopen('https://example.com', 'r');
$content = '';
while (!feof($handle)) $content .= fread($handle, 8192);
fclose($handle);

2. fgets() —— 逐行讀取,適合大型文字檔

$handle = fopen('file.txt', 'r');
while (!feof($handle)) echo fgets($handle, 1024);
fclose($handle);

預設長度 1024 位元組,PHP 4.3+ 可省略長度參數讀取完整行。

3. fgetss() —— 逐行讀取並移除 HTML/PHP 標籤

echo fgetss($handle, 1024, '<br>'); // 保留 <br> 標籤

4. file() —— 直接將檔案讀入陣列,每行一個元素

$lines = file('file.txt');
foreach ($lines as $num => $line) echo "Line $num: $line";

含換行符,可用 rtrim() 移除。

5. readfile() —— 直接輸出至瀏覽器,回傳位元組數

$size = readfile('file.txt'); // 適合圖片、PDF 直接下載輸出

6. file_get_contents() —— 效能最佳,將整個檔案讀入字串

$content = file_get_contents('file.txt');

支援 stream_context 設定 HTTP 超時、Header 等:

$ctx = stream_context_create(['http' => ['timeout' => 1]]);
echo file_get_contents('https://example.com', 0, $ctx);

7. fpassthru() —— 從目前指標位置輸出至 EOF

fseek($handle, 1024); // 跳過前 1KB
fpassthru($handle);   // 輸出剩餘內容

8. parse_ini_file() —— 解析 INI 設定檔為陣列

$config = parse_ini_file('config.ini', true); // true 保留區段結構

效能與選用建議

函式適用場景效能
file_get_contents中小型檔案整體讀取、遠端 HTTP 獲取⭐⭐⭐⭐⭐ (最快)
readfile直接輸出二進位檔(圖片/下載)⭐⭐⭐⭐⭐
fread/fgets大檔案分塊讀取、逐行處理⭐⭐⭐
file需逐行陣列處理的小型文字檔⭐⭐⭐
fpassthru需從特定位移開始輸出⭐⭐⭐
parse_ini_fileINI 設定檔解析專用

注意事項

  1. 二進位檔案建議在 fopen 模式加 b(如 rb),增強跨平台相容性。
  2. allow_url_fopen 需在 php.ini 開啟才能用 URL 開啟遠端檔案。
  3. URL 含特殊字元請先 urlencode() 編碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved