[英]PHP Real-Time Bandwidth
我正在尝试创建一个简单的文件托管脚本。 我正在自己学习PHP,因此遇到了一些困难。
想法是让每个用户的帐户都有自己的带宽分配(用于下载)。
我不确定如何做到。 我已经做了一些搜索,但是找不到答案。 据我所知,有两种方法可以做到这一点,
这样做的问题是,如果文件已被部分下载,它将提供不正确的结果。
我不知道该怎么做...缓冲?
我想要做的一个很好的例子是Rapidshare之类的东西。 他们有一种非常准确的方法来计算使用了多少带宽。
请通过一些可能的方法来启发我。
这似乎是一个理智的解决方案: PHP-确定通过HTTP发送多少字节
对于带宽限制,资源的大小无关紧要。 您可以使用令牌桶之类的算法。 我已经将所有内容都放入了一个库中: bandwidth-throttle/bandwidth-throttle
。 棘手的部分是共享令牌存储区,因为您想要每个用户的限制。
use bandwidthThrottle\BandwidthThrottle;
use bandwidthThrottle\tokenBucket\storage\PDOStorage;
$in = fopen(__DIR__ . "/resources/video.mpg", "r");
$out = fopen("php://output", "w");
$throttle = new BandwidthThrottle();
$throttle->setRate(100, BandwidthThrottle::KIBIBYTES); // Set limit to 100KiB/s
$throttle->setStorage(new PDOStorage($userId, $pdo)); // Set the limit per user
$throttle->throttle($out);
stream_copy_to_stream($in, $out);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.