|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不过语法好学,但是怎么用语法来实现每个人都有每个人的方式,几乎是各有千秋。然而借鉴别人成功的代码,绝对是有益无害,因此,多看那些经过千锤百炼凝出来的经典代码,是进阶的最好方法。偶然候你会出于某种目标而请求把下载文件的速率加快一些,比方你想完成文件下载进度条功效。限定下载速率最年夜的优点是节俭带宽,制止瞬时流量过年夜而形成收集梗塞。本文将和你分享怎样经由过程php代码来完成限定文件的下载速率。
起首来看看使用php限定文件下载速率的代码:- <?php//将发送到客户真个当地文件$local_file=www.Alixixi.com.zip;//文件名$download_file=your-download-name.zip;//设置下载速度(=>31.2kb/s)$download_rate=31.2;if(file_exists($local_file)&&is_file($local_file)){header(Cache-control:private);//发送headersheader(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)){printfread($file,round($download_rate*1024));//发送以后部分文件给扫瞄者flush();//flush内容输入到扫瞄器端sleep(1);//终端1秒后持续}fclose($file);//封闭文件流}else{die(Error:文件.$local_file.不存在!);}
复制代码 上面对以上代码做一些剖析:
上述实例把文件下载速率限定为31.2kb/s,即每秒仅向客户端发送20.5kb的文件流,直到发送完全个文件为止。假如没有该限定,那末文件将以流的情势一同发送到客户端,有几发送几,这会呈现甚么情形?假设文件巨细为2m,那末一会儿把2m的数据传播送已往,这将大概招致收集梗塞而中止剧本的实行,这类下载体例是不克不及在实践使用中接纳的。
手艺方面,起首增加头文件,声明Content-Type为application/octet-stream,暗示该哀求将以流的体例发送,而且声明Content-Length,即声了然文件流的巨细。在代码里利用了flush(),flush函数感化是革新php程序的缓冲,完成print静态输入。
注重以上反省文件是不是存在是经由过程file_exists这个函数的,但这个函数只能反省相对以后服务器网站目次内里的文件,假如是互联网上的远程文件,能够经由过程本站以下这篇文章:
php判别远程文件是不是存在的举措
来反省文件是不是存在。
别的提示一下的是:奇妙使用上述代码,还能够完成客户端显现文件下载进度条的功效,有乐趣的伴侣能够尝尝,这里就未几写了。
一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊! |
|