我正在考虑设置一个文件主机(主要用于练习),但是如何确保免费用户只能以40-50 kb / s的速度运行,而高级用户可以更快的速度运行?
我猜您将所有文件放在2个不同的服务器上,只需控制端口连接(10 Mbit与1000 Mbit),但这需要镜像硬盘设置。
有了所有文件主机,我打赌必须有一个更简单的解决方案。
答案 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);