file_get_contents()
函數在讀取大文件時可能會導致內存溢出。為了避免這種情況,你可以使用其他方法來讀取文件,例如 fopen()
和 fread()
,或者使用 SplFileObject
類。下面是兩種方法的示例:
fopen()
和 fread()
:$filename = 'large_file.txt';
$bufferSize = 8192; // 每次讀取 8KB
$handle = fopen($filename, 'r');
if ($handle) {
while (!feof($handle)) {
$content = fread($handle, $bufferSize);
// 處理 $content,例如輸出或其他操作
echo $content;
}
fclose($handle);
} else {
echo '無法打開文件';
}
SplFileObject
類:$filename = 'large_file.txt';
$file = new SplFileObject($filename, 'r');
while (!$file->eof()) {
$content = $file->fgets();
// 處理 $content,例如輸出或其他操作
echo $content;
}
這兩種方法都可以有效地避免內存溢出問題,因為它們分塊讀取文件內容,而不是一次性將整個文件加載到內存中。你可以根據實際需求選擇合適的方法。