fpassthru()
函数在 PHP 中用于将数据从文件直接传输到输出流,而无需在内存中存储整个文件。这在处理大文件时非常有用,因为它可以显著降低内存使用量。
以下是使用 fpassthru()
函数处理大文件流的方法:
$inputFile = fopen('large_file.txt', 'rb');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="output.txt"');
fpassthru()
函数将文件指针从输入流直接传输到输出流。这将逐块读取文件并将其发送到浏览器,而无需将整个文件加载到内存中。while (!feof($inputFile)) {
fpassthru($inputFile);
}
fclose($inputFile);
这是一个完整的示例,用于将大文件流式传输到浏览器:
<?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()
函数不会显示任何进度信息。如果你需要跟踪大文件的传输进度,可以考虑使用其他方法,例如分块传输或计算已传输的字节数。