带有百分比进度条的PHP压缩/ zip文件 - 是否可能?

时间:2017-09-10 15:51:15

标签: php zip compression progress

尝试使用ZipArchive类压缩一堆文件。一切正常,但是我希望在用户等待压缩完成时使用压缩百分比的某种状态栏。

ZipArchive甚至可以实现这一点吗?我可以使用其他任何zib库来完成此任务吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

将文件添加到zip通常非常快速。通常,如果要压缩大量文件,最慢的过程是$zip->close()。 PHP zipArchive类中有一个新方法:https://www.php.net/manual/en/ziparchive.registerprogresscallback.php

这将允许您监视zip关闭的进度。

$zip = new ZipArchive();
if ($zip->open('php.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE)) {
$zip->addFile(PHP_BINARY, 'php');
$zip->registerProgressCallback(0.05, function ($r) {
    printf("%d%%\n", $r * 100);
});
$zip->close();

}

这似乎在PHP 8.0中可用。我使用PHP 7.4+进行了测试,目前尚不可用。