文件下载速度限制


Restrictions on file download speed?

我正在考虑设置一个文件主机(主要是为了练习),但是如何确保免费用户只能达到40-50 kb/s的速度,而付费用户可以达到更快的速度?

我猜你把所有的文件放在两个独立的服务器上,并简单地控制端口连接(10 Mbit和1000 Mbit),但这将需要一个镜像硬盘设置。

有这么多的文件主机,我敢打赌一定有一个更简单的解决方案。

这将在web服务器级别实现。如果您使用的是apache,这个问题可能会涉及如何实现节流:如何在apache中实现速率限制?(请求数/秒)

对于在每个用户的基础上做,可能有一种方法与这些apache配置指令从php接口,或者你可以有两个虚拟主机,其中一个被锁定到某些用户和更高的节流率。

你可以直接在PHP用户区控制带宽,例如:bandwidth-throttle/bandwidth-throttle

use bandwidthThrottle'BandwidthThrottle;
$in  = fopen(__DIR__ . "/resources/video.mpg", "r");
$out = fopen("php://output", "w");
$throttle = new BandwidthThrottle();
if ($user->isPremium()) {
    $throttle->setRate(500, BandwidthThrottle::KIBIBYTES); // 500KiB/s
} else {
    $throttle->setRate(50, BandwidthThrottle::KIBIBYTES); // 50KiB/s
}
$throttle->throttle($out);
stream_copy_to_stream($in, $out);