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);
}? 关键优势:
⚠️ 额外建议(提升整体上传体验):
既提升 CDN 加速能力,又减轻本地磁盘 I/O 压力。通过替换 file_get_contents() 为 file_exists() 这一微小但关键的重构,您的视频上传清理逻辑将立即提速 10 倍以上——这是 Laravel 文件操作中「用对函数」胜过「优化算法」的经典实践。