You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel表单提交大文件过慢求助:600MB文件需10-15分钟

解决Laravel大文件上传耗时过长的问题

针对你遇到的600MB视频在Laravel中上传耗时10-15分钟,而相同环境下普通WAMP项目仅需5秒的问题,除了已调整的post_max_size、upload_max_filesize和memory_limit,可以从以下几个方向排查解决:

1. 补充调整PHP的关键配置参数

除了已修改的三个参数,还需确保以下参数设置合理:

  • max_input_time:设置为足够大的值(如3600,单位秒),大文件上传时PHP处理输入数据需要更长时间,默认值可能不足以支撑。
  • max_execution_time:同样调整为3600或更大,避免脚本超时(虽然上传阶段主要受max_input_time影响,但保险起见一并调整)。
    修改后重启WAMP的Apache和PHP服务,通过phpinfo()确认参数生效。

2. 检查Apache服务器配置

WAMP使用Apache作为Web服务器,需调整以下配置(找到Apache的httpd.conf或httpd-vhosts.conf文件):

  • Timeout:默认是300秒,大文件上传需要更长时间,建议改为3600(1小时)。
  • LimitRequestBody:确保该值设置为0(不限制)或大于3GB的字节数(3GB=3221225472字节),避免Apache限制请求体大小。
    修改后重启Apache服务。

3. 排查Laravel中间件的影响

Laravel的全局中间件可能对请求处理产生额外开销,可临时测试:

  • 临时将上传路由排除在全局中间件之外,比如在app/Http/Kernel.php的$middleware数组中,注释掉非必要的中间件(如TrimStrings、ConvertEmptyStringsToNull等),测试上传速度是否改善。
  • 如果使用了第三方中间件(如日志、监控类),暂时禁用这些中间件,排查是否是它们导致的性能损耗。

4. 绕过Laravel请求解析层测试

尝试直接使用原生PHP的文件上传变量,排查是否是Laravel的请求解析逻辑导致的性能问题:
在控制器中修改代码为:

public function createVideo()
{
    var_dump($_FILES['video']);
}

测试上传速度是否有提升。

5. 实现分块上传(推荐方案)

对于3GB级别的大文件,单块上传本身就存在耗时久、易中断的问题,建议实现分块上传:

  • 前端使用JavaScript将文件分割为多个小块(如每块100MB),逐个向服务器发送请求。
  • 后端控制器接收每个分块,保存到临时目录,所有分块上传完成后再合并为完整文件。
    这种方式不仅能提升上传速度,还能避免因网络波动导致的上传失败,同时降低服务器内存压力。

内容的提问来源于stack exchange,提问作者peacemaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 13:23:28