制作一个特殊的下载页面

时间:2015-06-19 08:12:29

标签: php download

我想创建一个下载页面。我想为用户提供两种下载选项:

- >从快速服务器下载(用户付1美元即可全速下载和下载)

- >从慢速服务器下载(免费但下载速度应为70-100kb / s)

我是新手,如果有人能解释我如何:1)下载速度限制2)为用户提供免费和高级订阅,同时牢记免费用户获得低速3)我将很高兴paypal作为高级用户的付款方式 任何帮助将不胜感激。

提前致谢

2 个答案:

答案 0 :(得分:1)

您正在寻找的是Apache httpd的mod_ratelimit或nginx的limit_rate指令。

不要依赖PHP来处理整个下载过程,因为你要绑定一个完整的PHP工作者而没有额外的好处。相反,您可以依靠使用PHP来处理下载URI的身份验证机制,然后使用X-SENDFILE headers with Apache httpd mod_xsendfile来处理实际下载。

这就像在PHP中执行以下操作一样简单......

<?php
session_start();
if ($_SESSION['authed']) {
    header("X-SENDFILE: /path/to/download/foo.zip");
} else {
    header('Location: /authenticate');
}

依靠网络服务器为您提供文件所带来的一些好处包括:

  • 最佳传送(利用可用的mmap)
  • 正确处理缓存标头(就好像文件是静态提供的)
  • 在下载期间不会占用您的PHP进程,使其可用于提供除了提供静态内容之外真正需要PHP的其他请求。

答案 1 :(得分:0)

您可以将文件以块的形式输出到浏览器,并使用sleep()函数来限制速度。例如,输出为256 kB,然后输出sleep(1)为1s

另请查看此链接Apache - how to limit maximum download speed of files? (if not apache, i can run lighthttpd)

我认为@Sherif建议使用http服务器更好。