PHP - Zip extractTo()性能

时间:2017-12-08 09:51:03

标签: php benchmarking php-5.6

我正在运行PHP 5.6.3。 我的一个专业项目包括一个解压缩功能:

// ZIP file to extract
$my_file = "repository.zip";

$zip = new ZipArchive;
if ($zip->open($my_file) === TRUE)
{
    //Unpack all files from zip
    $zip->extractTo($this->target_directory);
}

$zip->close();

...在大型ZIP文件(约300Mo)上处理。

我做了很多执行时间基准,我发现extractTo()函数超过总处理时间的90%/ 95%(20秒)!最糟糕的是,ZIP大小将在接下来的几周内增加(可能高达500 Mo)。

有没有办法优化我脚本的这一部分? 知道我确实从ZIP中提取所有文件。

感谢。

1 个答案:

答案 0 :(得分:1)

  

有没有办法优化我的脚本的这一部分?

不 - 它是一行代码,只调用一次。很明显,没有办法优化它。

我怀疑你真正想知道的是你是否可以获得解压缩的文件 - 这是一个非常不同的问题。

  

extractTo()函数超过总处理时间的90%/ 95%(20秒)

经过的时间? CPU时间? PHP执行时间?

可能有更快获得结果的余地,但您没有提出正确的问题。你不会在这里找到解决方案 - 我们无法访问你的系统来为你修复它。

由于您没有告诉我们关于操作系统和硬件的任何信息,我们进一步限制了我们可以给出的建议。转向更快的CPU可能有所帮助 - 但根据您提供的信息,我们不知道它的CPU或存储I / O是否是这里的瓶颈。你如何让整个系统更快地填满一本大书(我知道,我已经写了一本书)。

在PHP之外进行提取可能有所帮助。

使用不同的压缩算法可能有所帮助。

创建多个文件并将它们并行解压缩可能有所帮助。

....但你也没有告诉我们这里的限制。