通八洲科技

如何优化 Laravel 中的文件上传性能以避免视频上传过慢

日期:2025-12-29 00:00 / 作者:聖光之護

laravel 视频上传缓慢常因误用 `file_get_contents()` 检查文件存在性导致,该函数会完整读取文件内容,极大拖慢大文件处理速度;改用 `file_exists()` 可将检查耗时从秒级降至毫秒级。

在您提供的代码片段中:

if($courseclass->video != "") {
    $content = @file_get_contents(public_path().'/video/class/'.$courseclass->video);
    if ($content) {
        unlink(public_path().'/video/class/'.$courseclass->video);
    }
}

问题核心在于:仅为了判断文件是否存在并删除,却调用了 file_get_contents() —— 这会导致 PHP 将整个视频文件(可能几十 MB 甚至上百 MB)一次性加载进内存,不仅严重拖慢执行速度(尤其在低配服务器或高并发场景下),还可能触发内存溢出(Allowed memory size exhausted)或超时(max_execution_time)。

✅ 正确做法是使用轻量、高效且语义明确的 file_exists():

$videoPath = public_path("video/class/{$courseclass->video}");
if ($courseclass->video && file_exists($videoPath)) {
    unlink($videoPath);
}

? 关键优势:

⚠️ 额外建议(提升整体上传体验):

通过替换 file_get_contents() 为 file_exists() 这一微小但关键的重构,您的视频上传清理逻辑将立即提速 10 倍以上——这是 Laravel 文件操作中「用对函数」胜过「优化算法」的经典实践。