我可以更改 ZipArchive 的压缩级别吗?
是否可以更改 ZipArchive 类使用的压缩级别和/或方法?
Is it possible to change the compression level and/or method used by the ZipArchive
class?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
根据 开放
bug 报告功能请求,目前这是不可能的在 php.net 上。This is currently not possible, according to the open
bug reportfeature request on php.net.它似乎已在 PHP 7 中实现/添加到重新分发文件中: ZipArchive::setCompressionName 和 ZipArchive: :设置压缩索引。未测试。
PS:之所以为文件而不是整个存档单独设置,是因为 ZIP 存档内的文件实际上本身就是 ZIP 文件,只是“粘合”在一起成为一个“主 ZIP 存档”。
It seems to have been implemented / added to redistribution files in PHP 7: ZipArchive::setCompressionName and ZipArchive::setCompressionIndex. Not tested.
PS: The reason why it is set individually for files and not the entire archive is because files inside a ZIP archive are actually themself ZIP files and are just "glued" together to one "master ZIP archive".
正如上一篇文章所述,您无法使用 Zip 来做到这一点。
如果指定压缩级别比归档方法更重要,则 PHP zlib 允许这样做:
$level - 压缩级别。可以指定为 0(表示无压缩),最多指定为 9(表示最大压缩)。
http://php.net/manual/en/book.zlib.php
As stated in previous post, you can't do it with Zip.
If specifying a compression level is more important than the archiving method, then PHP zlib allows it:
$level - The level of compression. Can be given as 0 for no compression up to 9 for maximum compression.
http://php.net/manual/en/book.zlib.php
事实上,即使在 2014 年,这也是不可能的,所以我不得不将“exec”函数与 linux 的 zip 命令一起使用:
Indeed it is not possible evenin 2014 so i had to use the "exec" function with the zip command for linux :