PHP 服务端下载大文件(100M-50G 大)会出现卡顿,并且下载速度也无法达到满速,问题出在哪里?

2023-01-07 15:09:21 +08:00
 herozzm

用的 nginx ,php 转到大文件的代码是:

header("Content-type: " . $mime) ;
header("Content-Disposition: attachment; filename=" . $filename);
header('X-Accel-Redirect: ' . $filepath);
exit;

本地千 M 带宽环境测试,服务端也在本地,下载速度只有 7-10MB/s ,并且点击下载后会卡 5s 甚至更久才开始下载

669 次点击
所在节点    问与答
4 条回复
lhbc
2023-01-07 15:13:20 +08:00
你这代码只是设置头部,怎么读取都不知道
是不是把文件都读到内存里再返回了?
herozzm
2023-01-07 15:14:35 +08:00
@lhbc 就是考虑到文件太大,所以不读取到内存,直接利用了 nginx 的`X-Accel-Redirect`特性提供下载
imdong
2023-01-07 15:14:57 +08:00
@lhbc 并且点击下载后会卡很多才下载

代码闭眼猜都知道怎么写的🐶
zhaohai
2023-01-07 23:13:57 +08:00
php.ini

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/907198

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX