我们的应用程序会覆盖现有的ZIP文件。 zip文件是可下载的,对于ZIP创建,我们使用PHP ZipArchive。
现在的问题是: 我是否必须创建一个TMP ZIP文件并将其重命名为所需的可下载文件名以进行原子操作并始终访问有效的ZIP文件,或ZipArchive的ZIP创建过程是否已原子化?
编辑: 在使用多个addFile调用对其进行测试后,使用sleep进行分隔,似乎在最后的close调用中创建/覆盖了该文件。但问题仍然是,最终的ZIP文件创建是原子的吗?
答案 0 :(得分:0)
用巨大的目录结构测试它(需要创建拉链〜10秒),然后观察-n 0.1解压缩-t foo.zip"在生成的ZIP文件中,似乎ZIP文件创建是原子的。 至少我在测试ZIP文件时没有错误。