前言
网上搜索X-Accel-Redirect限速下载都是千篇一律的教程,如果按照网上的教程开发,下载大文件时,我的站长站测试还是下载一半会失败。
我的站长站研究了很久,发现网上的分享的代码,缺少很多参数,整理分享一篇完整的X-Accel-Redirect大文件下载方案。
准备工作
在写代码前,你需要修改环境配置,否则大文件下载+低配服务器下载一半会失败。
1、修改php上传限制,比如:宝塔->软件商店->已安装~>PHP->.上传限制->修改为10240->保存
2、修改PHP超时限制,比如:宝塔->软件商店->已安装->PHP->超时限制->修改为3600->保存
3、修改Nginx上传限制,比如:宝塔->软件商店->己安装~>Nginx->性能调整->修改连接超时世间为3600-->保存
4、修改Nginx超时限制,比如:宝塔->软件商店->己安装~>Nginx->性能调整->修改最大上传文件为10240->保存
5、最后重启PHP和重启Nginx,最好是重启服务器最保险。
X-Accel-Redirect示例
然后就是完整的X-Accel-Redirect下载代码示例了,已测试,完美无错,1G1H的服务器可低速下载不失败。
//限速 $download_rate=202400; //防止GZIP压缩 header('Cache-Control: no-transform'); //请求类型 header('Content-Type:application/octet-stream'); //下载文件名称 header('Content-Disposition: attachment; filename="'.$filename.'";filename*=utf-8'."''".$filename.".".$ext); //开始下载 header('X-Accel-Redirect: '.$downurl); header('X-Sendfile: '.$downurl); header("X-Accel-Buffering: yes"); header('X-Accel-Limit-Rate: '.$download_rate); header("Accept-Ranges: none");
$filename为文件名称
$ext为文件后缀,也可以不要
$downurl为下载文件地址
$download_rate为限速多少B
以上变量自己读取自己的数据即可。