2013-04-08 118 views
2

我正在考慮設置一個文件主機(主要用於練習),但是如何確保免費用戶只能以40-50 kb/s的速度運行,而高級用戶可以以更快的速度運行?限制文件下載速度?

我想你把所有的文件放在2個獨立的服務器上,只需控制端口連接(10 Mbit vs. 1000 Mbit),但這需要安裝鏡像硬盤。

隨着所有的文件主機在那裏,我打賭必須有一個更簡單的解決方案。

+0

編輯:我想我發現這裏的東西:http://stackoverflow.com/questions/4002106/limit-download-speed-using-php至少它似乎工作(目前有一致的測試它75kb/s)。 – user1934039 2013-04-08 07:52:22

+0

這很酷,我喜歡它。 – 2013-04-08 07:54:58

+0

關於我上面發佈的鏈接,它是我正在測試的該頁面的底部腳本:http://stackoverflow.com/a/12245044/1934039 – user1934039 2013-04-08 08:01:19

回答

1

這將在Web服務器級別實施。這個問題可能會涵蓋如何使用apache實現節流:How can I implement rate limiting with Apache? (requests per second)

至於在每個用戶的基礎上做,可能會有一種方法來與PHP的這些Apache配置指令接口,或者你可以有兩個虛擬主機,其中一個虛擬主機被鎖定到某些用戶並具有較高的節流率。

+0

空白,對原始帖子添加了評論 – user1934039 2013-04-08 07:51:28

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);