php下載文件是通常使用readfile函數讀取文件進行下載,在遇到大文件下載的時候,往往不太適用,效率不怎麼樣。

使用x-sendfile模塊則可以繞過php讀取文件的方式了,直接設置頭部信息就可以,利用服務器將文件發送到客戶端進行下載

x-sendfile模塊

apache服務器的配置

設置xsendfile模塊打開

<Directory>
XSendFile On
</Directory> 

php測試代碼

header("X-Sendfile: $path_to_somefile");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$somefile\"");

ngnix服務器的配置

location /protected/ {internal;root   /some/path; //下載文件的目標路徑
}

如果需要重定向則

X-Accel-Redirect: /protected/iso.img;

php測試代碼如下

header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $basefilename);
header('X-Accel-Redirect: ' . UPLOAD_PATH . $filename);

转载于:https://www.cnblogs.com/timily/p/3929748.html

php大文件下載,使用apache/nginx x-sendFile模塊替換相关推荐

  1. ABP框架下文件下載

    ABP框架下添加DevExpress框架生成報表,記錄一下學習過程 方式1,原始方式大概思路,打開Controller的方法CreateInRecordReport創建一個本地臨時文件,返回文件名,再 ...

  2. SpringBoot 之 PDF大文件分片加载(后端)

    业务需求:前端集成pdf.js 实现在线阅读pdf 文件,但pdf 文件过大时(大于100M)会出现浏览器内存溢出导出程序崩溃的场景发生.针对这个情况,后端给出的解决方案是:分片加载pdf 文件流. ...

  3. 关于linux磁盘爆满定位大文件的方法

    在linux较长时间运行中,往往会过短时间磁盘使用率达到98%以上,此时,如何定位占用空间较大文件的位置呢?下面将逐步排查: 1. df -h 此时看到/dev/vdal的占用率已经100%,严重爆满 ...

  4. Linux运维实战|大文件切割

    介绍 日常工作中需要对日志文件进行分析,当日志文件过大时,Linux中使用vim.cat.vim.grep.awk等这些工具对大文件日志进行分析将会成为梦魇,具体表现在: 执行速度缓慢,文件内容需要加 ...

  5. 文件传输请求最快的方式_实施块请求并更快地上传大文件30

    文件传输请求最快的方式 Our test shows that the implementation of the chunked requests makes the upload 30% fast ...

  6. linux apache 大文件,Apache下error.log文件太大的处理方法

    Apache下error.log文件太大的处理方法 2019年05月03日 | 萬仟网网络运营 | 我要评论 清除error.log.access.log并限制apache日志文件大小的方法 有个客户 ...

  7. centos查看盘符_Centos下磁盘管理的常用命令记录(如查找大文件)

    Centos下磁盘管理的常用命令记录 查看系统磁盘空间占用,使用命令: df -h 结果: 查看磁盘inode使用情况,如果inode用完了,磁盘就没法写入新的内容了: df -i 结果: 如何查找磁 ...

  8. php 超过100m文件上传,科技常识:apache+php上传大文件以上传100M为例

    科技常识:apache+php上传大文件以上传100M为例 2021-03-19 18:54:57 今天小编跟大家讲解下有关apache+php上传大文件以上传100M为例 ,相信小伙伴们对这个话题应 ...

  9. Mac下使用docker下载nginx并挂载文件

    Mac下使用docker下载nginx并挂载文件. 也发到另外csdn:https://blog.csdn.net/zenkin/article/details/108612594 一.docker ...

最新文章

  1. DD来拜年送红包啦!
  2. 利用iframe与Response.Flush实现进度展示效果
  3. 【自动驾驶】30.c++实现基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换(附代码)
  4. TensorFlow学习笔记(十四)TensorFLow 用mnist数据做classification
  5. java通过poi读取excel中的日期类型数据或自定义类型日期
  6. 进程的创建与可执行程序的加载
  7. C++(STL):03---智能指针之shared_ptr
  8. Promise 最完整介绍与实现解密
  9. Intel Edison学习笔记(二)—— 入门环境配置
  10. 【遥感微课堂】学习ENVI5.0
  11. 惠普m128fn中文说明书_惠普M128fw使用说明书
  12. 11年艺术学习“转投”数学,他出版首本TensorFlow中文教材,成为蚂蚁金服技术大军一员...
  13. dota2自走棋Android怎么更新,dota2自走棋
  14. perfmon 端口修改_Windows操作统的性能监控工具――Perfmon.doc
  15. linux 运行QQ /Tim(超简单)
  16. 按Backspace键删除时,会出现^H
  17. 如何基于微信开放接口开发企业的微信CRM
  18. insmod 和 modprobe使用方法
  19. 原生JS实现拿到的时间戳“毫秒/秒”转为“时:分:秒”形式的效果
  20. This means it will render an <Outlet /> with a null value by default resulting in an “empty“ page.

热门文章

  1. redis debug命令详解
  2. 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02)
  3. 次债危机:全世界陪着美国等死
  4. Visual Studio 剪切板新特性
  5. Vue中$nextTick的理解
  6. java 无锁框架_高性能无锁并发框架 Disruptor,太强了!
  7. Unity 3D Hierarchy视图
  8. linux桌面xfce美化_Xfce Linux桌面环境,Arduino机器人,热门DevOps书籍,FreeDOS,Python,Go等
  9. 开源游戏引擎_Hatchit:开源游戏引擎
  10. unity gizmo_GitLab的新功能,沃尔玛的OneOps,《纽约时报》的Gizmo以及更多新闻