今天写了一个php限制下载速度的代码,防止服务器瞬间压力过大,给大家参考一下。下载是是很普遍的功能!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php // local file 发送到客户端下载 $local_file = 'test-file.zip'; // 用户得到的默认文件名 $download_file = 'your-download-name.zip'; // 设置下载速率限制(= > 20.5字节/秒) $download_rate = 20.5; if(file_exists($local_file) && is_file($local_file)) { // 发送头信息 header('Cache-control: private'); header('Content-Type: application/octet-stream'); header('Content-Length: '.filesize($local_file)); header('Content-Disposition: filename='.$download_file); // 刷新输出 flush(); // 读取文件 $file = fopen($local_file, "r"); while (!feof($file)) { //分段读取 print fread($file, round($download_rate * 1024)); // 刷新输出 flush(); // 睡眠一秒 sleep(1); } // 关闭文件 fclose($file); } else { die('Error: The file '.$local_file.' does not exist!'); } |
本文链接:http://www.521php.com/archives/876/
程序本天成,妙手偶得之!我们只是代码的搬运工!
转载请注明:http://www.521php.com/archives/876/
2014年03月09日 上午 12:23 指尖上的艺术 | 引用 | #1
严格来讲, flush只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用. 它是刷新WebServer(可以认为特指apache)的缓冲区.