PHP ZipArchive->close() is crazy slow


PHP ZipArchive->close() is crazy slow

我正在使用ZipArchive来增量压缩网站。我多次调用脚本以确保它不超过 php 最大执行时间。

这在大多数网络主机上工作正常。但是,对于某些主机,在存档上调用 close() 非常慢,并导致超过执行时间。

例如,在一台最大执行时间为 30 秒的主机上,我压缩 20 秒,然后调用 close,但它没有及时完成。

我已经尝试过PCLZip作为替代方案。它很可靠,但相比之下速度慢得惊人。

关于它为什么以这种方式运行以及如何解决它的任何想法?

例如,

尝试通过ftp运行fopen/fwrite/fclose。您会注意到fopenfclose需要一段时间才能执行,而fwrite是即时的。

您可能会说"这不可能是对的",fwrite每次都通过 ftp 发送数据。我不知道它是否这样做,但我敢打赌它没有,fclose发送所有批处理工作。

以类似的方式,ZipArchive::close可能会完成您在此之前构建的所有内容并将其合并到最终文件中。