如何在PHP中使用范围协议实现一个文件断点续传功能

  介绍

这期内容当中小编将会给大家带来有关如何在PHP中使用范围协议实现一个文件断点续传功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>范围协议用途:一般是用在断点续传的时候,但是实际的用户很大,例如你的web服务器需要输出一个大文件,那么用范围可以分段输出,缓解压力。同时在提供音乐视频等服务时可以缓冲下载,如果用户中途关闭,可以节约网络带宽。

& lt; PHP ?//,文件名   $ filename =, _GET 美元;[& # 39;文件名# 39;];//,文件路径   美元的位置=,& # 39;媒体/& # 39;,只美元文件名;//,后缀   $ extension =, substr  (, strrchr (文件名,美元大敌;& # 39;强生# 39;,),,1,);      if  (extension 美元;==,“mp3"), {   时间=美元mimeType “音频/mpeg";   },else  if  (extension 美元;==,“ogg"), {   时间=美元mimeType “音频/ogg";   }      if  (!, file_exists (,美元的位置),{   header  (,“HTTP/1.1, 404, Not  Found",);   返回;   }      $ size =, filesize (,美元的位置);   time 美元;=,date  (, & # 39; " # 39;,, filemtime (,美元的位置),);      $ fm =, @fopen (位置,美元大敌;& # 39;rb # 39;,);   if  (!, fm美元),{   header  (,“HTTP/1.1, 505, Internal  server  error",);   返回;   }      $ begin =, 0;   最终获得美元=,size 美元;作用;1;      if  (isset  (, _SERVER 美元;[& # 39;HTTP_RANGE& # 39;],)), {   if  (preg_match (, & # 39;/字节=\ h * (\ d +) - (\ d *) (\ d . *) ?/我# 39;,,_SERVER 美元;[& # 39;HTTP_RANGE& # 39;],, matches 美元;)),{//,读取文件,起始节点   $ begin =, intval  (, matches 美元;[1],);//,读取文件,结束节点   if  (!, empty  (, matches 美元;[2],)),{   最终获得美元=,intval  (, matches 美元;[2],);   }   }   }      if  (isset  (, _SERVER 美元;[& # 39;HTTP_RANGE& # 39;],)), {   header  (, & # 39; HTTP/1.1, 206, Partial 内容# 39;,);   },{else    header  (, & # 39; HTTP/1.1, 200,好吧,,);   }      header (,“内容类型:mimeType"美元;,);   header  (, & # 39; cache - control:,,, must-revalidate,,信息=0 & # 39;,);   header (, & # 39;杂注:,no - cache # 39;,);   header  (, & # 39; Accept-Ranges:,字节# 39;,);   header (, & # 39;内容长度:& # 39;,只((美元最终获得成功,美元开始),+,- 1),);      if  (isset  (, _SERVER 美元;[& # 39;HTTP_RANGE& # 39;],)), {   header (,“含量:bytes 开始-结束美元/size"美元;,);   }      header (,“附加项:内联;,文件名=$ filename",);   header  (,“Content-Transfer-Encoding: binary",);   header  (,“last - modified: time"美元;,);      $ cur =,美元开始;//,定位指针   fseek  (, fm美元,美元开始,,0,);      while (!大敌;feof  (, fm 美元),,,,cur 美元;& lt;=,最终获得美元,,,(connection_status  (),==, 0),), {   print  fread  (fm美元,大敌;min (, 1024 *, 16日,(最终获得美元;作用;cur美元),+,1,),);   +=$ cur  1024年,*,16;   }

上述就是小编为大家分享的如何在PHP中使用范围协议实现一个文件断点续传功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

如何在PHP中使用范围协议实现一个文件断点续传功能