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