我正在考慮設置一個文件主機(主要用於練習),但是如何確保免費用戶只能以40-50 kb/s的速度運行,而高級用戶可以以更快的速度運行?限制文件下載速度?
我想你把所有的文件放在2個獨立的服務器上,只需控制端口連接(10 Mbit vs. 1000 Mbit),但這需要安裝鏡像硬盤。
隨着所有的文件主機在那裏,我打賭必須有一個更簡單的解決方案。
我正在考慮設置一個文件主機(主要用於練習),但是如何確保免費用戶只能以40-50 kb/s的速度運行,而高級用戶可以以更快的速度運行?限制文件下載速度?
我想你把所有的文件放在2個獨立的服務器上,只需控制端口連接(10 Mbit vs. 1000 Mbit),但這需要安裝鏡像硬盤。
隨着所有的文件主機在那裏,我打賭必須有一個更簡單的解決方案。
這將在Web服務器級別實施。這個問題可能會涵蓋如何使用apache實現節流:How can I implement rate limiting with Apache? (requests per second)
至於在每個用戶的基礎上做,可能會有一種方法來與PHP的這些Apache配置指令接口,或者你可以有兩個虛擬主機,其中一個虛擬主機被鎖定到某些用戶並具有較高的節流率。
空白,對原始帖子添加了評論 – user1934039 2013-04-08 07:51:28
您可以直接控制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);
編輯:我想我發現這裏的東西:http://stackoverflow.com/questions/4002106/limit-download-speed-using-php至少它似乎工作(目前有一致的測試它75kb/s)。 – user1934039 2013-04-08 07:52:22
這很酷,我喜歡它。 – 2013-04-08 07:54:58
關於我上面發佈的鏈接,它是我正在測試的該頁面的底部腳本:http://stackoverflow.com/a/12245044/1934039 – user1934039 2013-04-08 08:01:19