`
feitu_jeff
  • 浏览: 42738 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PHP大文件下载解决

阅读更多

附件中有两个下载类,直接拿来可以用,都支持断点续传、速度限制,但是在linux都不能下载超过2G文件(都使用了fopen,但由于文件超过2G,无法返回文件句柄) ,不过在windows上测试超过2G的可以下载。

php下载类.zip (其中有个类需要BC高精函数库支持,linux上yum -y install php-bcmath)

 

超过2G解决方案:

一种直接将2G文件放到服务器目录下,通过url直接访问文件下载。 这个。。。不管怎么样也解决了问题

另一种通过apache拓展库mod_sendfile进行下载

代码片段如下:

 

 

$file = "XXX.zip";
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header("X-Sendfile: $file");

 

 关键代码为header("X-Sendfile: $file");

 

 

下面说下xsendfile模块安装,网上已经有,我稍微整理下

 

1. 获取mod_xsendfile文件(https://tn123.org/mod_xsendfile/);
2. 安装apxs,只要安装httpd-devel就可以
    yum install httpd-devel
3. 安装xsendfile模块 apxs -cia mod_xsendfile.c
4. 向httpd.conf中增加配置,/tmp 修改为文件存放目录
 XSendFilePath /tmp
   
5. 目录文件中增加.htaccess,文件内容为
<Files XXXXX.php>
XSendFile on 
</Files>


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics