V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
herozzm
V2EX  ›  问与答

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

  •  
  •   herozzm · 2023-01-07 15:09:21 +08:00 · 596 次点击
    这是一个创建于 468 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    第 1 条附言  ·  2023-01-07 16:10:04 +08:00
    好像和 php 没关系,我直接浏览器下载文件真实路径也是一样的,问题应该出在 nginx 上?
    第 2 条附言  ·  2023-01-07 17:03:08 +08:00
    最后发现是浏览器的问题,用 edge 下载大文件前就是会卡顿好一会,换 chrome 就飞速丝滑
    4 条回复    2023-01-07 23:13:57 +08:00
    lhbc
        1
    lhbc  
       2023-01-07 15:13:20 +08:00 via Android
    你这代码只是设置头部,怎么读取都不知道
    是不是把文件都读到内存里再返回了?
    herozzm
        2
    herozzm  
    OP
       2023-01-07 15:14:35 +08:00
    @lhbc 就是考虑到文件太大,所以不读取到内存,直接利用了 nginx 的`X-Accel-Redirect`特性提供下载
    imdong
        3
    imdong  
       2023-01-07 15:14:57 +08:00 via iPhone
    @lhbc 并且点击下载后会卡很多才下载

    代码闭眼猜都知道怎么写的🐶
    zhaohai
        4
    zhaohai  
       2023-01-07 23:13:57 +08:00
    php.ini
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2566 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:31 · PVG 23:31 · LAX 08:31 · JFK 11:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.