欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

php教程

完整的X-Accel-Redirect限速下载大文件方案

php教程 我的站长站 2022-12-09 共107人阅读

前言

网上搜索X-Accel-Redirect限速下载都是千篇一律的教程,如果按照网上的教程开发,下载大文件时,我的站长站测试还是下载一半会失败。

我的站长站研究了很久,发现网上的分享的代码,缺少很多参数,整理分享一篇完整的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

以上变量自己读取自己的数据即可。

相关推荐
  • PHP文件下载
  • 下载限速
  • 大文件下载
  • X-Accel
  • PHP大文件分流下载示例代码

    <?phpset_time_limit(0);$zip_file=&#39;demo.rar&#39;; $fp=fopen($zip_file,&#39;r&#39;);//只读方式打开 $filesize=filesize($zip_file);//文件大小/***********************header头不要设置错了哦****************************/ //返回...

    php教程 30 1年前
  • PHP大文件限速下载功能示例代码分享

    PHP在开发大文件下载功能中,推荐使用文件分段下载,避免文件过大,下载失败或文件损坏。大文件限速下载PHP代码<?php//设置文件最长执行时间set_time_limit(0);if (isset($_GET[&#39;filename&#39;]) && !empty($_GET[&#39;filename&#39;])) { $file_nam...

    php教程 46 2年前
  • Nginx + X-Accel大文件下载示例代码

    Nginx + X-Accel大文件下载示例代码,做个记录以后会用到。// 启用 nginx X-Accel 下载 header(&#39;Content-Type: application/octet-stream&#39;); $encoded_fname = &#39;附件名称&#39;; header(&#39;Content-Disposition: a...

    php教程 28 2年前
  • PHP下载功能手机浏览器乱码和变成HTML格式的解决方法

    今天我的站长站在测试一款下载站源码时发现,发现电脑端下ZIP文件完美无错,用手机浏览器和第三方浏览器下载变成了乱码,苹果手机还会给ZIP下载文件变成html格式。解决方案网上找了很多种解决方法,有的说是编码没设置好,有的说函数错乱。最后测试,我的站长站...

    php教程 62 2年前
  • Accept-Length无法获取下载文件大小解决方法

    php下载文件时,我们一般会加上如下的header信息:header("Content-type: application/octet-stream");header("Accept-Ranges: bytes");header("Accept-Length:".$fileSize); //请用Content-Lengthheader("Content-Disposition: attachment; filename="...

    php教程 52 2年前
  • 大文件分片上传 / 下载限速解决方案

    分片上传将需要上传的文件按照一定的分割规则,分割成相同大小的数据块;初始化一个分片上传任务,返回本次分片上传唯一标识;按照一定的策略(串行或并行)发送各个分片数据块;发送完成后,服务端根据判断数据上传是否完整,如果完整,则进行数据块合成得到原始文件。...

    php教程 51 1年前
  • php文件限速下载示例代码

    限速下载示例代码<?php// 将发送到客户端的本地文件$local_file=&#39;abc.zip&#39;;// 文件名$download_file=&#39;your-download-name.zip&#39;;// 设置下载速率(=> 31.2 kb/s)$download_rate=31.2;if(file_exists($local_file)&&is_file($local_fi...

    php教程 685 2年前
  • PHP大文件限速下载功能示例代码分享

    PHP在开发大文件下载功能中,推荐使用文件分段下载,避免文件过大,下载失败或文件损坏。大文件限速下载PHP代码<?php//设置文件最长执行时间set_time_limit(0);if (isset($_GET[&#39;filename&#39;]) && !empty($_GET[&#39;filename&#39;])) { $file_nam...

    php教程 46 2年前
  • nginx大于10M文件下载限速方案

    一、限制向客户端传输响应的速率句法: limit_rate rate;默认: limit_rate 0;内容: http,server,location,if in location限制向客户端传输响应的速率。在rate被以每秒字节数指定。零值禁用速率限制。该限制是根据请求设置的,因此,如果客户端同时打开两个连接...

    服务器配置 178 1年前
  • 完整的X-Accel-Redirect限速下载大文件方案

    前言网上搜索X-Accel-Redirect限速下载都是千篇一律的教程,如果按照网上的教程开发,下载大文件时,我的站长站测试还是下载一半会失败。我的站长站研究了很久,发现网上的分享的代码,缺少很多参数,整理分享一篇完整的X-Accel-Redirect大文件下载方案。准备工...

    php教程 107 1年前
  • php大文件下载超时中断解决方法

    <?php //设置脚本的最大执行时间,设置为0则无时间限制set_time_limit(0);ini_set(&#39;max_execution_time&#39;, &#39;0&#39;); $file_name = &#39;aa.zip&#39;; //本机文件地址$extension = pathinfo($file_name)[&#39;extension&#39;];$dowloa...

    php教程 61 1年前
  • 大文件分片上传 / 下载限速解决方案

    分片上传将需要上传的文件按照一定的分割规则,分割成相同大小的数据块;初始化一个分片上传任务,返回本次分片上传唯一标识;按照一定的策略(串行或并行)发送各个分片数据块;发送完成后,服务端根据判断数据上传是否完整,如果完整,则进行数据块合成得到原始文件。...

    php教程 51 1年前
  • Nginx + X-Accel大文件下载示例代码

    Nginx + X-Accel大文件下载示例代码,做个记录以后会用到。// 启用 nginx X-Accel 下载 header(&#39;Content-Type: application/octet-stream&#39;); $encoded_fname = &#39;附件名称&#39;; header(&#39;Content-Disposition: a...

    php教程 28 2年前
  • PHP大文件限速下载功能示例代码分享

    PHP在开发大文件下载功能中,推荐使用文件分段下载,避免文件过大,下载失败或文件损坏。大文件限速下载PHP代码<?php//设置文件最长执行时间set_time_limit(0);if (isset($_GET[&#39;filename&#39;]) && !empty($_GET[&#39;filename&#39;])) { $file_nam...

    php教程 46 2年前
  • phpreadfile下载大文件失败解决方法

    phpreadfile下载大文件失败解决方法,原因是PHP内存有限制,需要改为按块下载,就是把大文件切块后逐块下载。if (file_exists($file)){ if (FALSE!== ($handler = fopen($file, &#39;r&#39;))) { header(&#39;Content-Description: File Transfer&#3...

    php教程 62 1年前
  • Nginx + X-Accel大文件下载示例代码

    Nginx + X-Accel大文件下载示例代码,做个记录以后会用到。// 启用 nginx X-Accel 下载 header(&#39;Content-Type: application/octet-stream&#39;); $encoded_fname = &#39;附件名称&#39;; header(&#39;Content-Disposition: a...

    php教程 28 2年前
  • Nginx+X-Accel大文件下载统计、权限判断、速度限制功能

    实现逻辑启用nginx的x-accel用户访问php脚本各种过滤、统计php使用header("X-Accel-Redirect: /file/$fileName");唤起nginxnginx接力提供文件传输详细步骤1、Nginx配置某个站点,在server {}里面添加:location /xyz { internal; alias /var/www...

    服务器配置 73 1年前
  • 完整的X-Accel-Redirect限速下载大文件方案

    前言网上搜索X-Accel-Redirect限速下载都是千篇一律的教程,如果按照网上的教程开发,下载大文件时,我的站长站测试还是下载一半会失败。我的站长站研究了很久,发现网上的分享的代码,缺少很多参数,整理分享一篇完整的X-Accel-Redirect大文件下载方案。准备工...

    php教程 107 1年前