PHP Zip创建(覆盖)是一个原子操作吗?

PHP Zip创建(覆盖)是一个原子操作吗?,php,atomic,ziparchive,Php,Atomic,Ziparchive,我们的应用程序覆盖了一个已经存在的ZIP文件。 zip文件是可下载的,对于zip创建,我们使用PHP ZipArchive 现在的问题是: 我是否必须创建一个TMP ZIP文件并将其重命名为所需的可下载文件名,才能进行原子操作并始终访问有效的ZIP文件,还是ZipArchive的ZIP创建过程已经是原子的 编辑: 在使用多个addFile调用(用sleep分隔)对其进行测试后,似乎在最后一次close调用中创建/覆盖了该文件。但是问题仍然存在,最终的ZIP文件创建是原子的吗?在使用一个巨大的目录

我们的应用程序覆盖了一个已经存在的ZIP文件。 zip文件是可下载的,对于zip创建,我们使用PHP ZipArchive

现在的问题是: 我是否必须创建一个TMP ZIP文件并将其重命名为所需的可下载文件名,才能进行原子操作并始终访问有效的ZIP文件,还是ZipArchive的ZIP创建过程已经是原子的

编辑:
在使用多个addFile调用(用sleep分隔)对其进行测试后,似乎在最后一次close调用中创建/覆盖了该文件。但是问题仍然存在,最终的ZIP文件创建是原子的吗?

在使用一个巨大的目录结构(ZIP创建需要约10秒)对其进行测试,并在生成的ZIP文件上使用“watch-n 0.1 unzip-t foo.ZIP”后,似乎ZIP文件创建是原子的。
至少我在测试ZIP文件时没有出错

在使用一个巨大的目录结构(zip创建需要约10秒)和对生成的zip文件进行“watch-n0.1 unzip-tfoo.zip”测试后,似乎zip文件创建是原子的。
至少我在测试ZIP文件时没有出错

我不知道,但这可能比您想象的更容易测试(和修复)。减慢压缩过程,并尝试在压缩过程中使用其他操作访问文件;查看是否有损坏的文件。您肯定是对的,但询问会比测试更快;)也许有人已经知道了。如果没有,测试将是最后一个选择。“询问比测试更快”这是粗鲁的-你说的是你的时间比你请求帮助你的人的时间更宝贵。我不希望有人为我测试。。。我只是问一下。@PaulCrovella现在好些了吗?我不知道,但这可能比你想象的要容易测试(和修复)。减慢压缩过程,并尝试在压缩过程中使用其他操作访问文件;查看是否有损坏的文件。您肯定是对的,但询问会比测试更快;)也许有人已经知道了。如果没有,测试将是最后一个选择。“询问比测试更快”这是粗鲁的-你说的是你的时间比你请求帮助你的人的时间更宝贵。我不希望有人为我测试。。。我只是问你保罗克罗维拉现在好些了吗?