本文介绍通过内存缓存(ram)暂存文件处理结果,再一次性写入磁盘的方法,显著减少i/o开销,提升php脚本执行效率。适用于遍历目录、批量读取/计算后导出日志或报表的场景。
在PHP中,频繁调用 fopen(..., "a") 和 fclose()(尤其在循环内)会导致大量重复的磁盘I/O操作——每次打开/关闭文件不仅消耗系统资源,还可能因文件锁、缓冲区刷新、磁盘寻道等带来显著性能损耗。而将所有待写内容先累积至字符串变量(即内存缓存),最后仅执行一次文件写入,是简单却高效的优化策略。
以下是优化后的完整示例代码:
";
$result .= $line . "\n";
}
}
// 一次性写入:使用 file_put_contents 更简洁、安全(自动处理打开/关闭/错误)
if (file_put_contents("result.txt", $result, FILE_APPEND | LOCK_EX) === false) {
error_log("Failed to write to result.txt");
echo "Error: Unab
le to save results.";
} else {
echo "All file sizes saved successfully to result.txt.";
}
?>✅ 关键改进点说明:
⚠️ 注意事项:
综上,该方案在保持代码简洁的同时,大幅提升I/O密集型脚本的执行效率,是PHP批量文件处理中的基础但至关重要的最佳实践。