我一直试图弄清楚这一点:
我正在使用 PHP 创建一个文件托管站点,我想知道如何将用户限制为每天 10Gb 的带宽,以便他们可以下载 - 就像 RapidShare 一样,直到他们的会话过期。然后,它们将被退回 25Gb。
我可以使用什么类型的上限来监控他们下载(包括恢复)文件的会话?
我知道我必须对块数据或完成的总块做一些事情,然后我可以计算它们的总块。
我一直试图弄清楚这一点:
我正在使用 PHP 创建一个文件托管站点,我想知道如何将用户限制为每天 10Gb 的带宽,以便他们可以下载 - 就像 RapidShare 一样,直到他们的会话过期。然后,它们将被退回 25Gb。
我可以使用什么类型的上限来监控他们下载(包括恢复)文件的会话?
我知道我必须对块数据或完成的总块做一些事情,然后我可以计算它们的总块。
如果你想创建一个有这样限制的文件托管站点,我想你需要一个特定的 PHP 脚本来提供要下载的文件,就像 incrediman 说的那样。如果你对 PHP 和 Web 开发不是太陌生,我鼓励你也看看这篇文章:http: //onlamp.com/pub/a/php/2000/09/15/php_mysql.html
然而,最终的中心思想是最终用户将始终访问相同的脚本(假设您将其命名为“download.php”),并且您将使用查询字符串之类的东西来动态选择所提供的内容。因此,要下载类似“lenna.jpg”的文件,他们会访问类似于“www.yoursite.ex/download.php?file=lenna.jpg”的 URL。
因为这样做,您将在一个地方/脚本集中下载(这称为信息专家模式/原则),您还可以在一个中心位置记录用户在会话期间下载了多少(PHP 内置支持简单的会话信息...请参阅http://php.net/manual/en/features.sessions.php)和一个中心位置,一旦下载足够,就可以阻止它们。
您可以将用户的会话 ID 与他们下载的大量数据一起存储在数据库中。每次他们下载文件时,检查他们的
current_usage + size_of_file < 100mb
. 如果是,请允许下载,否则会显示错误。每天重置每个人current_usage
的0
。此外,您应该知道您可以使用 php 来启动下载,如果您想跟踪下载,您应该这样做。如果您只是链接到该文件,那将是行不通的。所以使用脚本来启动下载,并以这种方式增加他们的下载计数。
有关使用脚本启动下载的更多信息:http ://www.ryboe.com/tutorials/php-headers-force-download