X-SendFile是怎么回事


What's The Deal With X-SendFile?

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

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

  • 流媒体开放
  • 流式处理网址
  • file_get_contents
  • 卷曲
  • X-发送文件

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

问题是,我

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

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

谢谢!

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

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

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