我们有一些不能公开访问的大文件(1-8GB)。 目前我们正在通过一个PHP脚本来提供它们,caching1MB块的文件并将其写入输出。 这是令人难以置信的CPU密集型,并在只有几个下载活动时减慢服务器。 我们希望将文件传输工作转移到Apache或更高效的方法。 我们正在使用cookieauthentication。 除非有一些方法通过现有的PHP会话cookie来validationFTP会话,否则FTP下载已经结束。
理想情况下,我们希望能够使用PHP隐藏文件链接,同时将文件传输工作传递给Apache,这对于HTTP文件传输无疑比PHP更高效。 我们希望能够恢复下载。
任何帮助表示赞赏。
X-Sendfile专门用于这种types的操作。 你可以阅读http://codeutopia.net/blog/2009/03/06/sending-files-better-apache-mod_xsendfile-and-php/
mod_auth_tkt看起来很有趣。 如果您在UNIX上托pipe的Apache / PHP设置,这是一个低技术解决scheme:
将您的下载保存在非Web可访问的目录中,然后使用PHP脚本创build独特的符号链接。 然后,您可以在指定的时间段后(例如24小时后)删除符号链接。
这是一个例子。 假设您的文件存储在/ private,并由.htaccess文件保护。 您还有一个/ public目录,可以由Apache运行的用户写入。
伪代码:
然后可以使用cronjob运行“find / public -type l -mtime +24 -exec rm {} \;” 或类似的东西删除过期的符号链接。 (注意:使用find删除文件时要非常小心。)
此解决scheme不会阻止用户在接下来的24小时内共享链接,因此在重要的情况下可能不合适。 但是它不需要额外的Apache模块等
这Serverfault问题可能是相关的。 或者,你可以使用类似mod_auth_tkt的东西。
我已经使用了一个服务调用Net 2 FTP,这是一个纯粹的HTML / PHP接口在线访问FTP帐户。 您可以相对容易地下载和安装软件,因为它是一个如此小的网站,所以没有任何开销。
这个软件是非常有用和易于使用,听起来像它会是完美的使用。
主页是http://www.net2ftp.com/ ,它是完全免费的。