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>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值