限制PHP Web框架中的下载速度

时间:2012-04-25 10:27:31

标签: php cakephp zend-framework bandwidth-throttling

我将使用Web框架在PHP中实现一个网站。我从未在PHP中实现过网站...我在学习新语言时没有遇到任何问题。 问题是我想知道是否可以使用像Zend,CakePHP这样的框架来创建一个允许您以给定速率(例如50 KB / s)下载文件的页面? 谢谢。

5 个答案:

答案 0 :(得分:5)

您的服务器应该处理此问题,而不是PHP。

如果您有 Apache ,请参阅此处:

对于 Lighttpd ,请参见此处:

答案 1 :(得分:1)

据我所知,限制下载速度不是核心的一部分,但这很容易实现,只需扩展MediaView类并将simple feature添加到其中。

答案 2 :(得分:0)

在我看来,PHP不是限制下载的好语言。我从来没有这样做过,但我会这样做

header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename="image.jpg"');
$f = file('may_image_or_file_to_download.jpg');

foreach($f as $line){
  echo $line;
  flush();
  usleep(10000); //change sleep time to adjusting download speed
}

如果有可能,最好使用一些Apache mods

  

抱歉我的英文

答案 3 :(得分:0)

在这些框架中也可以使用PHP做的所有事情。诀窍是在不违反框架规则的情况下(例如MVC模式)这样做。

在CakePHP中,绝对可以创建一个控制器动作,该动作会输出一个包含所有所需头部的二进制文件。在您的控制器操作中,您可以limit the download speed with standard php

答案 4 :(得分:0)

如果框架没有提供该功能,请使用现有的库,例如: bandwidth-throttle/bandwidth-throttle

use bandwidthThrottle\BandwidthThrottle;

$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->throttle($out);

stream_copy_to_stream($in, $out);