fpassthru($stream) 是 PHP 中的一个函数,用于将数据流(如文件)直接传输到输出流(如浏览器),而不需要将整个文件加载到内存中。这使得处理大文件或实时数据传输时更加高效。
使用场景
- 大文件传输:当需要传输大文件时,使用
fpassthru()
可以避免一次性加载整个文件到内存中,从而提高性能。 - 实时数据传输:如果你正在处理实时数据流(例如,从数据库或网络获取的数据),并且希望立即将这些数据传输给用户,
fpassthru()
是一个很好的选择。
代码示例
在 Laravel 中,可以使用 fpassthru()
来实现文件的流式下载,而不必将整个文件内容加载到内存中。例如:
phpCopy Code
return response()->stream(function() use ($stream) { fpassthru($stream); }, 200, [ 'Content-Type' => $file->mime, 'Content-disposition' => 'attachment; filename="'.$file->original_name.'"', ]);
这段代码通过流的方式下载文件,设置适当的 HTTP 头部信息,确保文件以正确的格式和名称被下载。