【问题标题】:Restrictions on file download speed?限制文件下载速度?
【发布时间】:2013-03-30 05:10:12
【问题描述】:

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

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

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

【问题讨论】:

标签: php download rate-limiting


【解决方案1】:

这将在网络服务器级别实现。如果您使用的是 apache,这个问题可能会涉及如何实现节流:How can I implement rate limiting with Apache? (requests per second)

至于在每个用户的基础上进行,可能有一种方法可以与来自 php 的这些 apache 配置指令进行交互,或者您可以只拥有两个虚拟主机,其中一个被锁定给某些用户并且具有更高的节流率。

【讨论】:

  • 空白,已对原帖添加评论
【解决方案2】:

您可以直接控制 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2011-04-29
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    相关资源
    最近更新 更多