通八洲科技

如何高效批量写入文件:先缓存后一次性保存

日期:2026-01-01 00:00 / 作者:霞舞

本文介绍通过内存缓存(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: Unable to save results.";
} else {
    echo "All file sizes saved successfully to result.txt.";
}
?>

关键改进点说明:

⚠️ 注意事项:

综上,该方案在保持代码简洁的同时,大幅提升I/O密集型脚本的执行效率,是PHP批量文件处理中的基础但至关重要的最佳实践。