关于本站视频下载的说明
2011年03月25日 星期五我们的网站的访问负载主要来自视频的下载,目前对下载做了一些限制,这里说明一下.
简单说:最好的学习方式不是下载一大堆视频和电子书放到硬盘里,而是立即在线就看。
建议不要按下载按钮,而是按播放按钮,这样不会有任何问题,除非你上网的速度太慢。如果一定要下载,请务必一个一个文件下,下完一个再下一个。请不要用同时下载多个视频,不要使用迅雷等下载工具。否则你就会遇到无法下载的情况。
详细说明如下:
1:在同一个时刻,每个IP只允许有一个连接进行下载,比如说,一个用户正在下载或播放某一个视频教程,那么此时那就无法下载或播放其他视频教程。
这个要求用PHP是可以实现的,只需要把一个下载请求的IP记录在数据库中,对每次来的下载请求先在数据库中查一下,如果已经在下载文件了,那么就拒绝这个IP的请求,当一个下载结束或者人为终止以后,就在数据库中删除这个IP的记录,这是他在访问就被允许了。
但是仅仅这样做还不够,因为还会有很多人使用下载工具,大量并发地发出下载请求,而由于使用了上面第1条措施后,所有的下载请求都会转到一个PHP 文件上,这样如果并发的下载请求数量很多的话,就需要服务器创建大量的PHP进程,这也是一个非常大的负担,而且Apache对于同时并发创建的PHP进程数量是有限制的。为此,我们就不得不采取第二个限制措施:
2:对于那些非常疯狂地发出并发下载请求的IP,就只能实施封锁的办法了。
我们经常会观察到一秒钟发出超过10个请求的IP,这些IP就必须要拒绝掉了。我们会记录每一个下载文件的IP在一段时间中发出的请求数量,如果超过一定限额,就封IP了,也就是这个“拒绝”命令直接由web服务器Apache发出,而不再由PHP程序发出。
目前,把疯狂发出下载请求的IP放入黑名单这个功能可以由这个程序自动实现。当然更理想的状态是经过一段时间比如1个小时以后,再自动从黑名单中去掉,这个我没有做到程序里。因此,指使人工地过一段时间把黑名单清空一次。我对PHP所知甚少,没有太多的时间把这个程序做得很复杂了。
当然在设置了上面的限制以后,对一些访问者是有麻烦的,比如在局域网中的不同的人,往往使用同一个对外的IP,这样他们就会被看作是同一个IP而加以限制。但是目前我们也只能这样了。
以后有条件的话,我们会尽可能改善服务期的条件,比如使用独立主机等等,但是还是需要一定的盈利以后,才可以做到。再不赢利的情况下,服务器的投资还无法做到很大。
如果哪位有一些更好的建议,可以告诉我们,谢谢大家对我们的支持!

