Могу ли я изменить уровень сжатия ZipArchive? - PullRequest
16 голосов
/ 02 декабря 2009

Можно ли изменить уровень сжатия и / или метод, используемый классом ZipArchive?

Ответы [ 4 ]

25 голосов
/ 02 декабря 2009

В настоящее время это невозможно, согласно сообщению об ошибке open на php.net .

7 голосов
/ 02 декабря 2009

Как указано в предыдущем посте, вы не можете сделать это с Zip. Если указание уровня сжатия важнее, чем метод архивации, тогда PHP zlib позволяет это:

string gzcompress  ( string $data  [, int $level = -1  ] )

$ level - уровень сжатия. Может быть задано как 0 для без сжатия до 9 для максимального сжатия.

http://php.net/manual/en/book.zlib.php

5 голосов
/ 16 сентября 2017

Похоже, что это было реализовано / добавлено в файлы перераспределения в PHP 7: ZipArchive :: setCompressionName и ZipArchive :: setCompressionIndex . Не проверено.

PS: Причина, по которой он устанавливается индивидуально для файлов, а не для всего архива, заключается в том, что файлы внутри ZIP-архива фактически являются самими ZIP-файлами и просто «склеиваются» в один «главный ZIP-архив».

3 голосов
/ 24 июля 2014

Действительно, это невозможно даже в 2014 году, поэтому мне пришлось использовать функцию "exec" с командой zip для linux:

exec("cd \"".$the_directory_you want_to_zip."\" && zip -0 -r \"".$path_zip."\" .");
...