在询问并进行一些研究时,似乎很多人真的推动X-Sendfile作为从PHP脚本向基于浏览器的客户端提供大型可下载文件的首选方法。
我一直在研究的一些方法是:
其中,大多数人都告诉我X-Sendfile是最好的。
问题是,我正在尝试实现一种下载方法,它不仅能够处理大型文件,而且在大多数服务器上都可以广泛使用,因为我写的脚本将被许多其他服务器使用,而不仅仅是我自己的
我的问题是:是什么让X-Sendfile变得更好?如果它太好了,为什么我不能听到很多关于它的原因,为什么不经常使用它呢?最后,大多数典型的低预算共享Web主机是否支持X-Sendfile?
谢谢!
答案 0 :(得分:3)
它允许Web服务器以任何它认为将文件发送到客户端的最佳方式发送文件。它还支持范围请求(即下载管理器和恢复),只要网络服务器支持它而无需为其编写单行代码。
但是,“典型的低价共享Web主机”不太可能支持它。考虑一下你是否 想要定位它们;通常还涉及支持过时的PHP版本,令人讨厌的配置(启用safe_mode和/或magic_quotes)以及缺少PHP模块(如最近的PHP版本,但是请参阅我之前的一点)。
将文件发送到客户端的任何其他方式都有缺点,PHP需要读取它然后将其作为字符串数据传递给Web服务器(与例如让内核写入相比,效率不高整个文件到套接字)。使用file_get_contents
时更糟糕的是 - 您将整个文件读入内存中,这根本不是必需的。