fpassthru()
函數(shù)在 PHP 中用于將數(shù)據(jù)從文件直接傳輸?shù)捷敵隽?,而無需在內(nèi)存中存儲整個文件。這在處理大文件時非常有用,因為它可以顯著降低內(nèi)存使用量。
以下是使用 fpassthru()
函數(shù)處理大文件流的方法:
$inputFile = fopen('large_file.txt', 'rb');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="output.txt"');
fpassthru()
函數(shù)將文件指針從輸入流直接傳輸?shù)捷敵隽鳌_@將逐塊讀取文件并將其發(fā)送到瀏覽器,而無需將整個文件加載到內(nèi)存中。while (!feof($inputFile)) {
fpassthru($inputFile);
}
fclose($inputFile);
這是一個完整的示例,用于將大文件流式傳輸?shù)綖g覽器:
<?php
$inputFile = fopen('large_file.txt', 'rb');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="output.txt"');
while (!feof($inputFile)) {
fpassthru($inputFile);
}
fclose($inputFile);
?>
請注意,fpassthru()
函數(shù)不會顯示任何進度信息。如果你需要跟蹤大文件的傳輸進度,可以考慮使用其他方法,例如分塊傳輸或計算已傳輸?shù)淖止?jié)數(shù)。