文件下载速度限制?

时间:2013-04-08 07:34:52

标签: php download rate-limiting

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

我猜您将所有文件放在2个不同的服务器上,只需控制端口连接(10 Mbit与1000 Mbit),但这需要镜像硬盘设置。

有了所有文件主机,我打赌必须有一个更简单的解决方案。

2 个答案:

答案 0 :(得分:1)

这将是在Web服务器级别实现的。如果你正在使用apache,这个问题可能会涵盖如何实施限制:How can I implement rate limiting with Apache? (requests per second)

至于在每个用户的基础上进行,可能有一种方法可以从php连接这些apache配置指令,或者你可以只有两个虚拟主机,其中一个被锁定到某些用户并具有更高的节流速率。

答案 1 :(得分:0)

您可以使用以下方法直接控制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);