尝试使用ZipArchive类压缩一堆文件。一切正常,但是我希望在用户等待压缩完成时使用压缩百分比的某种状态栏。
ZipArchive甚至可以实现这一点吗?我可以使用其他任何zib库来完成此任务吗?
谢谢!
答案 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+进行了测试,目前尚不可用。