X-SendFile 有什么用?

JRO*_*ROB 5 php fopen curl x-sendfile

在四处打听和做一些研究时,似乎很多人真的在推动 X-Sendfile 作为从 PHP 脚本向基于浏览器的客户端提供大型可下载文件的首选方法。

我一直在研究的一些方法是:

  • 流媒体开放
  • 流式卷曲
  • 文件获取内容
  • 卷曲
  • X-发送文件

其中,大多数人告诉我 X-Sendfile 是最好的。

问题是,我正在尝试实现一种下载方法,它不仅能够处理大文件,而且可以在大多数服务器上广泛通用,因为我正在编写的脚本将被许多其他服务器使用,而不仅仅是我自己的。

我的问题是:是什么让 X-Sendfile 变得更好?如果它这么好,为什么我没有听到很多关于它的消息,为什么它没有被更频繁地使用?最后,大多数典型的低预算共享网络主机是否支持 X-Sendfile?

谢谢!

Thi*_*ter 3

它允许网络服务器以其认为是将文件发送到客户端的最佳方式发送文件。它还支持范围请求(即下载管理器和恢复),只要网络服务器支持它,而无需为其编写一行代码。

然而,“典型的低预算共享网络主机”不太可能支持它。考虑一下你是否真的想瞄准他们;这通常还涉及支持过时的 PHP 版本、令人讨厌的配置(启用 safe_mode 和/或 magic_quotes)以及缺少 PHP 模块,例如 PDO(在最近的 PHP 版本中始终启用,但请参阅我之前的观点之一)。

任何其他向客户端发送文件的方式都有一个缺点,即 PHP 需要读取它,然后将其作为字符串数据传递给 Web 服务器(与让内核将整个文件写入套接字相比,效率不高)。使用file_get_contents它时更糟糕 - 您将整个文件读入内存,这是根本没有必要的。