82870034 发表于 2017-3-25 09:12:25

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>








页: [1]
查看完整版本: PHP大文件下载解决