通过Apache和PHP virtual()函数发送文件,支持HTTP_RANGE

我使用PHP函数virtual()通过Apache 2.2发送文件(它的工作比readfile()更快),我可以检查用户访问权限。

但有什么办法来增加持续的下载支持,HTTP_RANGE?

我尝试过这样的事情

  if(isset($ _ SERVER ['HTTP_RANGE'])){ 
         list($ a,$ range)= explode(“=”,$ _ SERVER ['HTTP_RANGE']); 
         str_replace($ range,“ - ”,$ range); 
         $ size2个= $大小-1; 
         $ new_length = $ $大小 - 范围; 
        标题(“HTTP / 1.1 206部分内容”); 
        标题(“Content-Length:$ new_length”); 
        标题(“Content-Range:bytes $ range $ size2 / $ size”); 
         apache_setenv('HTTP_RANGE',$ _SERVER ['HTTP_RANGE']);
     } else { 
         $ size2个= $大小-1; 
        标题(“Content-Range:bytes 0- $ size2 / $ size”); 
        标题(“Content-Length:”。$ size); 
 } 

所以web客户端被下载的文件就像HTTP_RANGE一样工作,但是在真正的Apache中总是发送相同的文件范围,如:如果客户端请求4000-6000字节,Apache发送0-2000等,所以文件被破坏。

我认为有一些方法可以使用apache_setenv来实现,但在Google上找不到任何有关这方面的build议。

尝试使用Apache的xfilesend模块。