繁体   English   中英

PHP实时带宽

[英]PHP Real-Time Bandwidth

我正在尝试创建一个简单的文件托管脚本。 我正在自己学习PHP,因此遇到了一些困难。

想法是让每个用户的帐户都有自己的带宽分配(用于下载)。

我不确定如何做到。 我已经做了一些搜索,但是找不到答案。 据我所知,有两种方法可以做到这一点,

  1. 找出下载的文件大小,并假设该文件应完整,然后将其添加到使用的带宽中。

这样做的问题是,如果文件已被部分下载,它将提供不正确的结果。

  1. 找出传输的字节。

我不知道该怎么做...缓冲?

我想要做的一个很好的例子是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM