1

我将使用 Web 框架在 PHP 中实现一个网站。我从来没有用 PHP 实现过网站……我学习新语言没有问题。问题是我想知道是否可以使用 Zend、CakePHP 等框架来创建一个页面,让您以给定的速率(例如 50 KB/s)下载文件?谢谢你。

4

5 回答 5

5

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

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

对于Lighttpd,请参见此处:

于 2012-04-25T10:37:29.683 回答
1

据我所知,限制下载速度不是核心的一部分,但这很容易实现,只需扩展MediaView类并向其添加简单的功能

于 2012-04-25T10:37:33.920 回答
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 模组

对不起我的英语不好

于 2012-04-25T10:38:17.830 回答
0

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

在 CakePHP 中,绝对有可能创建一个控制器动作来输出一个包含所有需要的头文件的二进制文件。在您的控制器操作中,您可以使用标准 php 限制下载速度

于 2012-04-25T10:43:00.337 回答
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);
于 2015-08-08T22:38:53.560 回答